摘要:被調用者通過狀態通知機制等來通知調用者,或通過回調函數來處理結果阻塞和非阻塞關注的是調用者等待被調用者返回調用結果時的狀態。每當就緒,采用系統的回調函數之間將放入,效率更高,最大連接無限制。
一、I/O介紹和Nginx簡介 1.1 I/O 類型(理解)
同步和異步:關注的是消息通知機制;
同步:調用發出之后不會立即返回,但一旦返回,則返回最終結果;異步:調用發出之后,被調用方立即返回消息,但返回的并非最終結果。被調用者通過狀態、通知機制等來通知調用者,或通過回調函數來處理結果;
阻塞block和非阻塞nonblock:關注的是調用者等待被調用者返回調用結果時的狀態。
阻塞:調用結果返回之前,調用者會被掛起,調用者只有在得到返回結果之后才能繼續。1.2 I/O模型非阻塞:調用者在結果返回之前,不會被掛起;
blocking IO:阻塞式IO nonblocking IO:非阻塞IO multiplexing:多路復用IO signal driven IO:事件驅動式IO asynchronous IO:異步IO
真正執行IO過程的階段是內核內存數據拷貝到進程內存中。
1.3 Nginx優點Nginx(發音同engine x)是一個異步框架的 Web服務器,也可以用作反向代理,負載平衡器 和 請求分發。1.3.1 I/O多路復用(重點)
多個描述符的IO操作都能夠在一個線程內并發交替的順序完成,這就叫做IO多路復用,這里的復用指的是復用同一個線程。(就像多個學生同時完成作業,同時共享一個老師,學生做完作業舉手請求老師。)
select:線性遍歷,效率低,監視文件描述符的數量存在最大限制為1024。
epoll:每當FD就緒,采用系統的回調函數之間將FD放入,效率更高,最大連接無限制。(例:服務器告訴老板給顧客結賬,"select"只告訴老板有客人結賬,老板需要挨個詢問,而"epoll"同時告訴老板是哪些顧客要結賬。)
Nginx就是采用的epoll模型。
1、功能模塊少
2、代碼模塊化(易讀易開發)
nginx的CPU的親和,有多個工作進程運行方式減少性能損耗,是一種把CPU核心和nginx工作進程綁定方式,把每個worker進程固定在一個cpu上執行,減少切換cpu的cache miss,獲得更好的性能。
1.3.4 sendfile不通過User space,減少靜態文件用戶空間切換,直接通過內核零拷貝,明顯提高傳輸效率。
二、配置語法(非常常用) 2.1 默認配置語法nginx.conf 作為主配置文件
include /etc/nginx/conf.d/*.conf 讀到這會把該目錄的.conf也讀進來
1、全局性的和服務級別的
user 設置使用用戶 worker_processes 進行增大并發連接數的處理 跟cpu保持一致 八核設置八個 error_log nginx的錯誤日志 pid nginx服務啟動時候pid
2、event對事件的模塊
worker_connections 一個進程允許處理的最大連接數 use 定義使用的內核模型
3、server
root 首頁的路徑 index 首頁默認訪問哪個頁面 error_page 500 502 503 504 /50x.html 錯誤頁面 前面的500是**`http狀態碼`** systemctl restart nginx.service 重啟nginx systemctl reload nginx.service 不關閉服務柔和地重啟2.2 HTTP
curl -v http://www.baidu.com >/dev/null #-v 同時顯示狀態碼等信息 nginx -V #顯示nginx版本及配置文件等信息2.3 日志
日志類型:error.log和access.log
error.log(記錄處理http請求的錯誤狀態以及nginx本身服務的錯誤狀態) access.log(每次http請求的訪問狀態)
log_format:設置了日志的記錄格式,定義日志以什么樣的樣式記錄到error.log、access.log中,log_format的配置只能配置在http模塊中。
access_log配置在http中。
2.4 變量 三、Nginx模塊Nginx官方模塊 第三方模塊3.1 默認模塊
http_stub_status_module:監控NGINX客戶端狀態
location /mystatus{ stub_status; }
瀏覽器訪問:www.xxxx.com/mystatus
random_index off | on 寫在默認的配置文件loaction 里面,這個配置是隨機訪問主頁頁面,如果有隱藏的主頁面則不會訪問(以.開頭的文件)
sub_filter 字符串替換四、請求限制和訪問控制 4.1 請求限制
sub_filter_once默認是開啟(on)只替換一個,改為off的話,多個要替換的都會替換掉;這個配置作用在 http server location這三個作用域中
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個字節
CentOS 7 安裝 ab(Apache Benchmark)壓力測試工具sudo yum -y install httpd-tools
ab -n 50 -c 20 http://www.xxx.com/xxx.html # -n 發起的請求數 -c 并發數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 五、靜態資源WEB服務 5.1 靜態資源類型 5.2 靜態資源服務場景-CND 5.3 壓縮與解壓縮 5.4 瀏覽器緩存(重要) 5.4.1 瀏覽器無緩存 5.4.2 瀏覽器有緩存 5.4.3 校驗過期機制 5.4.4 配置語法 - expires 5.5 跨站訪問 5.5.1 為什么瀏覽器禁止跨站訪問不安全,容易出現CSRF攻擊!5.6 防盜鏈(重要)
防止資源被盜用
防盜鏈思路:
首要方式:區別哪些請求時非正常的用戶請求5.6.1 基于http_refer防盜鏈配置模塊
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 #表示從百度refer過去的下一篇:基于Nginx的中間件架構(二):代理服務、負載均衡、緩存服務、動靜分離
參考視頻資料:Nginx入門到實踐 不管是運維還是開發 Nginx都是你的必備技能
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39819.html
摘要:缺點客戶端可能會再用一層代理三緩存服務理解緩存類型配置語法協議等域名請求參數清理指定緩存讓部分頁面不緩存大文件分片請求四動靜分離參考視頻資料入門到實踐不管是運維還是開發都是你的必備技能下一篇基于的中間件架構三規則和讀取地域信息模塊服務 上一篇:基于Nginx的中間件架構(一):配置語法、Nginx模塊、請求限制和訪問控制、靜態WEB服務 一、代理服務(理解) 代理 - 代為辦理(如代...
摘要:深度學習篇一動靜分離通過中間件將動態請求和靜態請求進行分離。原因分離資源,減少不必要的請求消耗,減少請求延時。關閉后,重定向會失效。驗證規則保持一致。啟動,也會要求你輸入密碼。根據用戶的信息等信息區別根據用戶的地址實現灰度發布示意圖 Nginx-深度學習篇 一、動靜分離 通過中間件將動態請求和靜態請求進行分離。原因:分離資源,減少不必要的請求消耗,減少請求延時。 動態和靜態請求圖例:s...
摘要:深度學習篇一動靜分離通過中間件將動態請求和靜態請求進行分離。原因分離資源,減少不必要的請求消耗,減少請求延時。關閉后,重定向會失效。驗證規則保持一致。啟動,也會要求你輸入密碼。根據用戶的信息等信息區別根據用戶的地址實現灰度發布示意圖 Nginx-深度學習篇 一、動靜分離 通過中間件將動態請求和靜態請求進行分離。原因:分離資源,減少不必要的請求消耗,減少請求延時。 動態和靜態請求圖例:s...
摘要:題外話,由于使用經常需要編輯,我們可以借助來使語法高亮,看起來更清晰明了。移動到目錄在中添加再打開,已經有語法高亮了里面提供了很多可以調節優化的地方,這里簡要了解模塊的幾個常用參數。允許或禁止基于請求響應的壓縮。表示匹配的路徑。 Nginx是一款輕量級的Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。在Java的Web架構中,通常使用Tomcat和Nginx進行...
閱讀 2155·2021-10-08 10:15
閱讀 1184·2019-08-30 15:52
閱讀 514·2019-08-30 12:54
閱讀 1530·2019-08-29 15:10
閱讀 2682·2019-08-29 12:44
閱讀 3007·2019-08-29 12:28
閱讀 3347·2019-08-27 10:57
閱讀 2212·2019-08-26 12:24