Nginx

有什麼方法可以減少 Nginx 配置中的冗餘位置塊程式碼?

  • April 3, 2019

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";
}

引用自:https://serverfault.com/questions/961276