nginx使用指南
1,運行nginx
可以運行nginx命令開啟nginx:
如果nginx已經開啟了,可以運行nginx命令加-s 參數來控制nginx的運行
nginx -s signalsignal的值:
stop— 快速關閉
quit— 優雅的關閉
reload— 重新加載配置文件reopen— 重新打開日志文件
</ul>
例如:要等nginx處理完當前的請求后關閉nginx可以用下面的命令
nginx -s quit
修改了配置文件后需要運行下面的命令
nginx -s reload
2,簡單配置nginx
打開配置文件,一般在/etc/nginx/nginx.cnf中,依照自己安裝參數而定。
nginx.conf 中已經包含了一個server塊的配置案例,不過是注釋掉的。下面是一個server塊的基本配置
http {
server {
}
}server塊下面可以配置一些location來指定請求url對應的本地資源
location / {
root /data/www;
}上面表示所有的/ 下面的訪問資源都在/data/www 文件夾下面
location /images/ {
root /data;
}這個表示所有/images/路徑訪問的圖片都在/data下面
那么上面的統一配置就是
server {
listen 8080;
location / { root /data/www; }
location /images/ { root /data; }
}</pre>
如果我訪問http://localhost/images/example.png的話,nginx就會返回文件目錄中/data/images/下面的example.png圖片返回給客戶端
如果我訪問http://localhost/some/example.html的話,nginx就會返回文件目錄中/data/www/下面的example.html圖片返回給客戶端
listen可以不指定,默認是8080
如果在運行期間修改了配置運行
nginx -s reload
如果配置驗證通,但沒有按照約定訪問到指定的文件可以查看/usr/local/nginx/logs 或/var/log/nginx下面的日志文件access.log和error.log
3,配置反向代理
server {
location / {
proxy_pass http://localhost:8080;
}
location /images/ {
root /data;
}
}</pre>
proxy_pass指定反向代理的路徑,所有符合/的路徑都會到http://localhost:8080中獲取資源
如:http://192.168.1.100/some/example.html 訪問的資源 其實是 http://localhost/some/example.html獲取的資源,這些對客戶端是透明的。
4,主機名
服務器名稱通過server_name指令指定,它決定哪個server來處理哪個請求.server_name 可以通過通配符,正則指定。
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$;
...
}</pre>當一個請求同時滿足多個主機名的時候優先選擇的主機名有如下順序。
1,全名稱,準確的名稱。
2,最長的通過*開頭的通配符名稱“*.example.org”
3,最長的通過*結尾的通配符名稱“mail.*”
4,第一個匹配正則表達式的虛擬主機名
通配符只能在主機名的開始和結束使用,“www.*.example.org”和“w*.example.org” 都是錯誤的寫法,如果需要匹配這種模式可以通過正則表達式指定,如“~^www\..+\.example\.org$” and“~^w.*\.example\.org$”。星號代理主機名的一部分“*.example.org”不僅代表www.example.com還代表www.sub.example.com。.example.org既可以代表example.org也可以代表*.example.org。
如果要使用正則表達式,主機名必須以波浪符~開始
server_name ~^www\d+\.example\.net$;
如果不是以波浪符號~還是,那么它被認為是一個全主機名。如果正則表達式主機名中包含*,那么它被認為是一個通配符主機名。^和$是必需的,他們是語法和邏輯上的要求。
通過正則捕獲可以再后面的變量中引用
server {
server_name ~^(www.)?(?<domain>.+)$;
location / {
root /sites/<strong>$domain</strong>;
}
}</pre>正則表達捕獲可以支持如下的語法
?< |
Perl 5.10 compatible syntax, supported since PCRE-7.0 | </tr>|||||||||||||||||||||||||
?' |
Perl 5.10 compatible syntax, supported since PCRE-7.0 | </tr>|||||||||||||||||||||||||
?P< |
Python compatible syntax, supported since PCRE-4.0 | </tr> </tbody> </table> 正則捕獲也可以通過數字參數獲取