Há alguma maneira de reduzir códigos de bloco de localização redundantes na configuração do Nginx?

É possível secar um monte de blocos de localização no Nginx com a mesma configuração exata, apenas rotas diferentes? Dê uma olhada no seguinte snippet do meu Nginx .conf , por exemplo:

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

Aqui, tenho pelo menos dois locais blocos com os mesmos valores para expira , add_header Pragma e add_header Cache-Control . Na realidade, tenho pelo menos 12-15 desses blocos para vários arquivos estáticos.

Existe alguma maneira de reduzir a quantidade de código redundante aqui? Digamos, ter um único bloco com esses valores e fazer referência a esse bloco único em cada bloco de localização ? Eu até tentei usar regex para apenas reduzir o número de blocos de localização , mas isso gerou o seguinte erro:

"proxy_pass" não pode ter parte URI no local fornecido por regular expressão ou dentro do local nomeado

Alguma solução alternativa?

0
задан 3 April 2019 в 12:54
1 ответ

Попробуйте следующее:

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";
}
2
ответ дан 4 December 2019 в 13:20

Теги

Похожие вопросы