location [= | ~ | ~* | ^~] /uri/ { ... }
| 修飾符 | 說明 | 優先級 |
|---|---|---|
= | 精確匹配,匹配成功立即停止搜尋 | 最高 |
^~ | 前綴匹配,匹配成功不再測試正則 | 高 |
~ | 區分大小寫正則匹配 | 中 |
~* | 不區分大小寫正則匹配 | 中 |
!~ / !~* | 不匹配正則(區分/不區分大小寫) | 中 |
| 無修飾符 | 前綴匹配(字串比對) | 低 |
=^~ 與無修飾符(最長前綴優先)~ ~*(配置檔順序優先)location /location = / {
# 僅匹配 / 請求
[ configuration ]
}
# 圖片快取 1 小時
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
expires 1h;
break;
}
}
# 防盜鏈:僅允許指定域名引用圖片
location ~* \.(gif|jpg|swf)$ {
valid_referers none blocked start.example.com sta.example.com;
if ($invalid_referer) {
rewrite ^/ https://$host/logo.png;
}
}
# 禁止存取特定副檔名
location ~* \.(txt|doc)$ {
root /data/www/wwwroot/test;
deny all;
}
# 優先匹配 /images/ 目錄,不再進入正則判斷
location ^~ /images/ {
# 圖片處理邏輯
}
server {
listen 80;
server_name example.com;
location = / { ... } # 精確首頁
location / { ... } # 預設 fallback
location ^~ /images/ { ... } # 靜態目錄優先
location ~* \.(php|php5)$ { # PHP 處理
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
}
$request_filename:請求檔案完整路徑$remote_addr:客戶端 IP$host:請求 Host 標頭$uri:不帶參數的請求 URI$args / $query_string:查詢字串~ 或 ~*,否則視為字串前綴匹配^~ 僅適用於字串前綴,不可搭配正則^~CentOS 7 編譯安裝 Nginx + MySQL + PHP 部署 BugFree 缺陷管理系統全紀錄
IIS 記憶體耗盡解決方案:IIS 5.0 專用回收工具 IIS5Recycle 部署與配置實戰
Windows Server 2008 IIS FTP 無法連線/傳輸卡住?防火牆狀態化 FTP 規則一鍵開啟
CentOS 7/8 禁用/啟用 Ping (ICMP) 及 iptables/firewalld 防火牆放行配置
Vista IIS 7.0 三大常見問題與解決方案:權限、父路徑、ASP+Access 連線