location指令是http模塊當中最核心的一項配置,根據預先定義的URL匹配規則來接收用戶發送的請求,根據匹配結果,將請求轉發到後臺服務器、非法的請求直接拒絕並返回40三、40四、500錯誤處理等。html
location [=|~|~*|^~|@] /uri/ { … } 或 location @name { … }
nginx
location指令分爲兩種匹配模式:正則表達式
先匹配普通字符串模式(普通匹配,匹配到會暫存,繼續搜索正則匹配),再匹配正則模式(正則模式匹配到,即爲最終匹配)
。只識別URI部份,例如請求爲:/test/abc/user.do?name=xxxx 一個請求過來後,Nginx匹配這個請求的流程以下:location /test/ { … }
location /test/abc { … }
複製代碼
location =/ { … }
與 location / { … }
的差異:緩存
location ~ /test/.+.jsp$ { … }
:正則匹配,支持標準的正則表達式語法。 location ^~ / { … }
: ^~意思是關閉正則匹配,當搜索到這個普通匹配模式後,將再也不繼續搜索正則匹配模式。bash
http {
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
# deny all; 拒絕請求,返回403
# allow all; 容許請求
}
location /abc {
deny all;
}
location ~ /.+\.jsp$ {
proxy_pass http://location:9090;
}
# 匹配全部/test路徑下的jsp文件
location ~ /test/.+\.jsp$ {
proxy_pass http://localhost:8080;
}
# 定義各種錯誤頁
error_page 404 /404.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# @相似於變量定義
# error_page 403 http://blog.csdn.net; #這種定義不容許,需求利用@定義臨時變量來實現
error_page 403 @page403;
location @page403 {
proxy_pass http://blog.csdn.net;
}
}
}
複製代碼