Nginx
嵌套位置無法正常工作
我無法調試這段 nginx 配置:
我想為文件的所有請求添加一些標頭
我想刪除我添加到我的 veiw 目錄中的令牌以避免不需要的瀏覽器記憶體:
location /static { location ~* \.pdf$ { add_header Access-Control-Allow-Origin *; add_header Content-Disposition 'inline'; } #Remove Anti cache token rewrite "^/static[0-9]{10}/(.*)$" /static/$1 last; ... }
沒有 nginx 語法錯誤,但請求
非常感謝任何幫助
謝謝
當
nginx
選擇一個location
處理請求時,它可以選擇內塊或外location
塊。它沒有結合兩者的陳述。
rewrite
不被嵌套繼承location
。如果您希望將rewrite
其應用於所有位置,則應將其置於server
塊範圍內。您的語句的正則表達式
rewrite
足夠具體,可以按原樣移動。例如:
rewrite "^/static[0-9]{10}/(.*)$" /static/$1 last; location /static { location ~* \.pdf$ { add_header Access-Control-Allow-Origin *; add_header Content-Disposition 'inline'; } ... }
當然,在兩個塊中重複該
rewrite
語句可能更有效。location
另一種方法是
rewrite
完全避免這種情況,並使用正則表達式通過使用指令location
來刪除反記憶體令牌。alias
有關更多資訊,請參閱此文件。例如:
location ~ "^(?<prefix>/static)[0-9]{10}(?<suffix>/.*)$" { alias /path/to/root$prefix$suffix; location ~* \.pdf$ { add_header Access-Control-Allow-Origin *; add_header Content-Disposition 'inline'; } ... }
請注意,正則表達式
location
塊與前綴塊具有不同的評估順序location
。有關詳細資訊,請參閱此文件。