一辽社、I/O介紹和Nginx簡介
1.1 I/O 類型(理解
)
同步和異步:關(guān)注的是消息通知
機制伟墙;
同步: 調(diào)用發(fā)出之后
不會立即返回
,但一旦返回滴铅,則返回最終結(jié)果戳葵;異步:調(diào)用發(fā)出之后,被調(diào)用方
立即返回消息
失息,但返回的并非最終結(jié)果譬淳。被調(diào)用者通過狀態(tài)、通知機制等來通知調(diào)用者盹兢,或通過回調(diào)函數(shù)來處理結(jié)果邻梆;
阻塞block和非阻塞nonblock:關(guān)注的是調(diào)用者等待被調(diào)用者返回調(diào)用結(jié)果時的狀態(tài)。
阻塞:
調(diào)用結(jié)果返回之前绎秒,調(diào)用者會被掛起
浦妄,調(diào)用者只有在得到返回結(jié)果之后才能繼續(xù)。非阻塞:****調(diào)用者在結(jié)果返回之前见芹,不會被掛起剂娄;
1.2 I/O模型
blocking IO:阻塞式IO nonblocking IO:非阻塞IOmultiplexing:多路復(fù)用IO signal driven IO:事件驅(qū)動式IO asynchronous IO:異步IO
真正執(zhí)行IO
過程的階段是內(nèi)核內(nèi)存數(shù)據(jù)拷貝到進程內(nèi)存中。
1.3 Nginx優(yōu)點
Nginx
(發(fā)音同engine x
)是一個異步框架的Web
服務(wù)器玄呛,也可以用作 反向代理阅懦, 負(fù)載平衡器 和 請求分發(fā)。
1.3.1 I/O多路復(fù)用(重點
)
多個描述符的IO操作都能夠在
一個線程內(nèi)并發(fā)交替的順序完成
徘铝,這就叫做IO多路復(fù)用耳胎,這里的復(fù)用指的是復(fù)用同一個線程。(就像多個學(xué)生同時完成作業(yè)惕它,同時共享一個老師怕午,學(xué)生做完作業(yè)舉手請求老師。)
select
:線性遍歷淹魄,效率低郁惜,監(jiān)視文件描述符的數(shù)量存在最大限制為1024。
epoll
:每當(dāng)FD
就緒甲锡,采用系統(tǒng)的回調(diào)函數(shù)之間將FD
放入兆蕉,效率更高羽戒,最大連接無限制。(例:服務(wù)器告訴老板給顧客結(jié)賬恨樟,'select'
只告訴老板有客人結(jié)賬半醉,老板需要挨個詢問,而'epoll'
同時告訴老板是哪些顧客要結(jié)賬劝术。)
Nginx
就是采用的epoll模型缩多。
1.3.2 輕量級
1、功能模塊少
2养晋、代碼模塊化(易讀易開發(fā))
1.3.3 CPU的親和(affinity)
nginx的CPU的親和衬吆,有多個工作進程運行方式減少性能損耗,是一種把CPU核心和nginx工作進程綁定方式绳泉,把每個worker
進程固定在一個cpu
上執(zhí)行逊抡,減少切換cpu
的cache miss
,獲得更好的性能零酪。
1.3.4 sendfile
不通過User space
,減少靜態(tài)文件用戶空間切換冒嫡,直接通過內(nèi)核零拷貝,明顯提高傳輸效率四苇。
10年架構(gòu)師領(lǐng)你架構(gòu)-成長之路-(附面試題(含答案))
(騰訊T3-T4)打造互聯(lián)網(wǎng)PHP架構(gòu)師教程目錄大全孝凌,只要你看完,薪資立馬提升2倍(持續(xù)更新)
二月腋、配置語法(非常常用
)
2.1 默認(rèn)配置語法
nginx.conf
作為主配置文件
include /etc/nginx/conf.d/*.conf
讀到這會把該目錄的.conf
也讀進來
1蟀架、全局性的和服務(wù)級別的
user 設(shè)置使用用戶worker_processes 進行增大并發(fā)連接數(shù)的處理 跟cpu保持一致 八核設(shè)置八個error_log nginx的錯誤日志pid nginx服務(wù)啟動時候pid
2、event
對事件的模塊
worker_connections 一個進程允許處理的最大連接數(shù)use 定義使用的內(nèi)核模型
3榆骚、server
root 首頁的路徑index 首頁默認(rèn)訪問哪個頁面error_page 500 502 503 504 /50x.html 錯誤頁面 前面的500是**`http狀態(tài)碼`** systemctl restart nginx.service 重啟nginxsystemctl reload nginx.service 不關(guān)閉服務(wù)柔和地重啟
2.2 HTTP
curl -v http://www.baidu.com >/dev/null #-v 同時顯示狀態(tài)碼等信息nginx -V #顯示nginx版本及配置文件等信息
2.3 日志
日志類型:error.log
和access.log
error.log(記錄處理http請求的錯誤狀態(tài)以及nginx本身服務(wù)的錯誤狀態(tài))access.log(每次http請求的訪問狀態(tài))
log_format:設(shè)置了日志的記錄格式片拍,定義日志以什么樣的樣式記錄到error.log、access.log中妓肢,log_format的配置只能配置在http模塊中捌省。
access_log
配置在http
中。
2.4 變量
三碉钠、Nginx模塊
Nginx官方模塊第三方模塊
3.1 默認(rèn)模塊
http_stub_status_module:監(jiān)控NGINX客戶端狀態(tài)
location /mystatus{ stub_status; }
瀏覽器訪問:www.xxxx.com/mystatus
random_index off | on 寫在默認(rèn)的配置文件loaction 里面纲缓,這個配置是隨機訪問主頁頁面,如果有隱藏的主頁面則不會訪問(以.開頭的文件)
sub_filter 字符串替換
sub_filter_once默認(rèn)是開啟(on)只替換一個放钦,改為off的話色徘,多個要替換的都會替換掉恭金;這個配置作用在 http server location這三個作用域中
感謝大家一直來支持操禀,這是我準(zhǔn)備的1000粉絲福利
【1000粉絲福利】10年架構(gòu)師分享PHP進階架構(gòu)資料,助力大家都能30K
四横腿、請求限制和訪問控制
4.1 請求限制
limit_conn_module 連接頻率限制limit_req_module 請求頻率限制
HTTP
請求事建立在TCP
之上的颓屑,會進行三次握手斤寂;
長連接:keepalive
。
鏈接限制:
請求限制:
Syntax: limit_req_zone key zone=name:size rate =rate;Default:——Context:http Syntax: limit_req_zone=name [burst=number] [nodelay];Default:——Context:http,server,location
存儲remote_add回避binary_remote_addr多10個字節(jié)
CentOS 7 安裝 ab(Apache Benchmark)壓力測試工具
sudo yum -y install httpd-tools
ab -n 50 -c 20 http://www.xxx.com/xxx.html # -n 發(fā)起的請求數(shù) -c 并發(fā)數(shù)
4.2 訪問控制
4.2.1 基于IP的訪問控制 - http_access_module
Syntax: allow address | CIDR | unix: | all; Default:—— Context:http,server,location,limit_except Syntax:deny address | CIDR | unix: | all; Default:—— Context:http,server,location,limit_except
location ~
(模式匹配
)
4.2.2 基于用戶的信任登錄 - http_auth_basic_module
大廠2000道面試題(含答案)
PHP面試題匯總揪惦,看完這些面試題助力你面試成功遍搞,工資必有20-25K
五、靜態(tài)資源WEB服務(wù)
5.1 靜態(tài)資源類型
5.2 靜態(tài)資源服務(wù)場景-CND
5.3 壓縮與解壓縮
5.4 瀏覽器緩存(重要
)
5.4.1 瀏覽器無緩存
5.4.2 瀏覽器有緩存
5.4.3 校驗過期機制
5.4.4 配置語法 - expires
5.5 跨站訪問
5.5.1 為什么瀏覽器禁止跨站訪問
不安全器腋,容易出現(xiàn)
CSRF
攻擊溪猿!
5.6 防盜鏈(重要)
防止資源被盜用
防盜鏈思路:
首要方式:區(qū)別哪些請求時非正常的用戶請求
5.6.1 基于http_refer防盜鏈配置模塊
喜歡我的文章就關(guān)注我吧,持續(xù)更新中.....
以上內(nèi)容希望幫助到大家纫塌,很多PHPer在進階的時候總會遇到一些問題和瓶頸诊县,業(yè)務(wù)代碼寫多了沒有方向感,不知道該從那里入手去提升措左,對此我整理了一些資料依痊,包括但不限于:分布式架構(gòu)、高可擴展怎披、高性能胸嘁、高并發(fā)、服務(wù)器性能調(diào)優(yōu)凉逛、TP6性宏,laravel,YII2鱼炒,Redis衔沼,Swoole、Swoft昔瞧、Kafka指蚁、Mysql優(yōu)化、shell腳本自晰、Docker凝化、微服務(wù)、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家酬荞,需要的可以點擊進入暗號:知乎搓劫。
curl -I http://api.go-qxd.com/static/images/nx-xds-logo.jpg # 只請求頭信息 curl -e "http://baidu.com" -I http://api.go-qxd.com/static/images/nx-xds-logo.jpg #