Назад | Перейти на главную страницу

Есть ли способ уменьшить избыточные коды блоков местоположения в конфигурации 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 блоки с одинаковыми значениями для 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";
}