Можно ли СУШИТЬ кучу 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
блоки с одинаковыми значениями для expires
, add_header Pragma
, и add_header Cache-Control
. На самом деле таких блоков у меня как минимум 12-15 для разных статичных файлов.
Есть ли здесь способ уменьшить количество избыточного кода? Скажем, имея один блок с этими значениями и ссылаясь на этот единственный блок в каждом 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";
}