Nginx
有什麼方法可以減少 Nginx 配置中的冗餘位置塊程式碼?
location
是否可以用完全相同的配置在 Nginx中乾燥一堆塊,只是路徑不同?例如,看一下我的 Nginx 的以下片段.conf
:location / { proxy_pass http://127.0.0.1:3000; charset UTF-8; proxy_http_version 1.1; } location ~ /android-chrome-192x192.png { proxy_pass http://127.0.0.1:3000/static/brand/favicons/android-chrome-192x192.png; expires 365d; add_header Pragma public; add_header Cache-Control "public"; } location = /android-chrome-512x512.png { proxy_pass http://127.0.0.1:3000/static/brand/favicons/android-chrome-512x512.png; expires 365d; add_header Pragma public; add_header Cache-Control "public"; } location ~* \.(?:ico|svg|woff|woff2|ttf|otf|css|js|gif|jpe?g|png)$ { proxy_pass http://127.0.0.1:3000; expires 365d; add_header Pragma public; add_header Cache-Control "public"; }
在這裡,我至少有兩個塊的、和
location
具有相同的值。實際上,對於各種靜態文件,我至少有 12-15 個這樣的塊。expires``add_header Pragma``add_header Cache-Control
有沒有辦法減少這裡的冗餘程式碼量?比如說,有一個帶有這些值的塊並在每個塊中引用該單個
location
塊?我什至嘗試使用正則表達式來減少location
塊本身的數量,但這會引發以下錯誤:“proxy_pass”不能在正則表達式給出的位置或命名位置內包含 URI 部分
任何解決方法?
試試這個:
location ^~ /android-chrome- { proxy_pass http://127.0.0.1:3000/static/brand/favicons/android-chrome-; expires 365d; add_header Pragma public; add_header Cache-Control "public"; }