1. 程式人生 > >一篇文章掌握Nginx核心檔案結構

一篇文章掌握Nginx核心檔案結構

> 文章主要分析Nginx核心配置檔案 ./conf/nginx.conf ### 1 Nginx核心配置結構 ![](https://img2020.cnblogs.com/blog/830289/202012/830289-20201212095636835-561238497.png) ### 2 配置模組詳解 1. 設定worker程序的使用者,指的linux中的使用者,會涉及到nginx操作目錄或檔案的一些許可權,預設為nobody ``` user root; ``` 2. worker程序工作數設定,一般來說CPU有幾個,就設定幾個,或者設定為N-1也行 ``` worker_processes 1; ``` 3. nginx 日誌級別debug | info | notice | warn | error | crit | alert | emerg,錯誤級別從左到右越來越大 4. 設定nginx程序 pid ``` pid logs/nginx.pid; ``` 5. 設定工作模式 ```nginx events { # 預設使用epoll use epoll; # 每個worker允許連線的客戶端最大連線數 worker_connections 10240; } ``` 6. http 是指令塊,針對http網路傳輸的一些指令配置 ``` http { } ``` 7. include 引入外部配置,提高可讀性,避免單個配置檔案過大 ``` include mime.types; ``` 8. 設定日誌格式,main為定義的格式名稱,如此 access_log 就可以直接使用這個變量了 ![](https://img2020.cnblogs.com/blog/830289/202012/830289-20201212095658834-1581142539.jpg) ``` 引數名 引數意義 $remote_addr 客戶端ip $remote_user 遠端客戶端使用者名稱,一般為:’-’ $time_local 時間和時區 $request 請求的url以及method $status 響應狀態碼 $body_bytes_send 響應客戶端內容位元組數 $http_referer 記錄使用者從哪個連結跳轉過來的 $http_user_agent 使用者所使用的代理,一般來時都是瀏覽器 $http_x_forwarded_for 通過代理伺服器來記錄客戶端的ip ``` 9. sendfile使用高效檔案傳輸,提升傳輸效能。啟用後才能使用tcp_nopush,是指當資料表累積一定大小後才傳送,提高了效率。3 ``` sendfile on; tcp_nopush on; ``` 10. keepalive_timeout設定客戶端與服務端請求的超時時間,保證客戶端多次請求的時候不會重複建立新的連線,節約資源損耗 ``` #keepalive_timeout 0; keepalive_timeout 65; ``` 11. 啟用壓縮,html/js/css壓縮後傳輸會更快 ``` gzip on; ``` 12. server可以在http指令塊中設定多個虛擬主機 - listen 監聽埠 - server_name localhost、ip、域名 - location 請求路由對映,匹配攔截 - root 請求位置 - index 首頁設定 ``` server { listen 88; server_name localhost; location / { root html; index index.html index.htm;