轉載自品略圖書館 http://www.pinlue.com/article/2020/07/0222/5010943860746.html
Nginx的組態檔只是一個普通的文字檔案,這裏借用《深入理解Nginx模組開發與架構解析》上的例子記錄Nginx設定的通用語法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
user nobody;
worker_processes 8;
error_log varlog/nginx/error.log error;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 50000;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main "$remote_addr [$time_local] "$request" "
"$status $bytes_sent "$http_referer" "
""$http_user_agent" "$http_x_forwarded_for"";
access_log logs/access.log main buffer=32k;
...
}
1.塊設定項
塊設定由一個塊設定項名和一對大括號組成,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
events {
...
}
http {
upstream backend {
server 127.0.0.1:8080;
}
gzip on;
server {
...
location /webstatic {
gzip off;
}
}
上述程式碼中的events、http、server、location、upstream等都是塊設定項,塊設定項後大括號中的就是這個設定項的設定。塊設定項可以巢狀,內層的塊設定會直接繼承外層塊的設定,如上述的server就繼承了http的設定。但是當內層設定與外層設定衝突時,該塊設定會採用哪種設定(這裏不解釋,在Nginx塊內設定衝突一文中介紹)?
語言方法
19375SecTnf4lQ
CRK79李亞倩
36092006-11-19 23:19:54
2.設定項格式
從上述中可以瞭解到,最基本的設定項語法格式就是設定項名+設定項值,設定項名與設定項值之間使用空格符來隔開,而且一個設定項可以對應多個值,最後在每一行設定的結尾都需要加上分號。
3.註釋
不管是程式碼還是設定中,註釋都是不能少的一部分,而nginx組態檔中的行註釋與python一樣,使用「#」符號可以註釋掉這一行內容,如下。
1
#pid logs/nginx.pid;
4.設定項單位
大部分的模組都遵從一些通用規定,如指定空間大小時不需要每次都定義到位元組,指定時間是不需要到毫秒級。
當指定空間大小的時候,可以使用K、M爲單位。
當指定時間時,可以使用ms、s、m、h、d、w、m、y爲單位。如下:
gzip_buffers 4 8k;client_max_body_size 64M;expires 10y;proxy_read_timeout 600;client_body_timeout 2m;
5.設定中使用變數
Nginx中有一些模組容許在設定項中使用變數,比如在日誌記錄部分,我們可以在變數前新增「$」符號,代表該值是一個變數。不過要特別注意的是這種變數只是少數模組支援,並不是通用的。
1
2
3
log_format main "$remote_addr - $remote_user [$time_local] "$request" "
"$status $bytes_sent "$http_referer" "
""$http_user_agent" "$http_x_forwarded_for"";