Nginx能幹的事不少,很強大。官方文檔詳見點我。php
-? | -h 打印幫助信息 -c file 讀取指定配置文件,而不是默認的nginx.conf -g directives 從命令行直接讀取配置,取代nginx.conf -p prefix 指定工做目錄 (默認是/usr/local/nginx) -q 配置測試期間,禁止輸出非錯誤信息 -s signal 發送信號給worker進程,其中signal真實信號名,也能夠是stop(強制退出)、quit(優雅退出)、reload(從新加載配置)、reopen(從新打開log文件) -t 測試配置文件是否正確 -T 同上,可是會同時輸出整個配置文件 -v 打印版本號 -V 打印更多配置/編譯信息
Nginx進程pid默認在如下文件中:
/usr/local/nginx/logs/nginx.pid
html
發送信號給master進程以控制worker進程,詳見點我nginx
若是有以下配置,那鏈接被代理到這三個裏邊的哪個處理?是根據HTTP頭部的HOST字段來判斷的,若是沒有HOST字段,那就默認第一個配置來處理,除非指定了default_server關鍵字。若是想決絕掉全部不帶HOST字段的請求,那就配置一個server_name爲空字符串"",而後return
一個444狀態碼。正則表達式
server { listen 80; server_name example.org www.example.org; ... } server { listen 80; server_name example.net www.example.net; ... } server { listen 80; server_name example.com www.example.com; ... }
若是有以下配置,首先檢測的是ip,其次纔是server_name。dom
server { listen 192.168.1.1:80; server_name example.org www.example.org; ... } server { listen 192.168.1.1:80; server_name example.net www.example.net; ... } server { listen 192.168.1.2:80; server_name example.com www.example.com; ... }
若是有以下配置,nginx會優先選擇最匹配的uri。location /
就能匹配全部url,那麼優先級就最低,若是訪問/xyz.php,那就交給cgi處理,若是訪問/xyz.png,那就到/data/www目錄下找。若是訪問的是/
,那麼在/data/www目錄下找index.html文件,找不到則匹配index.php,也就是交給cgi處理,由於location ~ \.php$
更匹配。測試
server { listen 80; server_name example.org www.example.org; root /data/www; location / { index index.html index.php; } location ~* \.(gif|jpg|png)$ { expires 30d; } location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
以下配置,server_name 參數支持精確匹配、通配符、正則表達式。建議一行別寫太多個參數,參數的個數是有限制的。ui
server { listen 80; server_name example.org www.example.org; ... } server { listen 80; server_name *.example.org; ... } server { listen 80; server_name mail.*; ... } server { listen 80; server_name ~^(?<user>.+)\.example\.net$; ... }
若是HTTP host匹配到多個server,則按以下順序選擇:url
編寫規則:.net
ww*.example.com
。一個比較特殊的字符串.example.org
,能夠匹配example.org
和*.example.org
。~
,不然會被當作其餘兩種匹配方式。經常使用的有前置^
和尾置$
,.
須要加轉義字符\
。{}
時須要爲字符串加上雙引號,如"~^(?<name>\w\d{1,3}+)\.example\.net$"
以下配置,是server_name變量捕捉的例子。命令行
server { server_name ~^(www\.)?(?<domain>.+)$; location / { root /sites/$domain; } }
語法:
?<name>
Perl 5.10 compatible syntax, supported since PCRE-7.0?'name'
Perl 5.10 compatible syntax, supported since PCRE-7.0?P<name>
Python compatible syntax, supported since PCRE-4.0