一篇文章掌握Nginx核心檔案結構
阿新 • • 發佈:2020-12-12
> 文章主要分析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;