nginx regex для определения местоположения, кеширования конкретного файла - PullRequest
0 голосов
/ 24 января 2019

Мне нужно кэшировать определенные файлы в обратном прокси-сервере nginx, но на исходном сервере они (разработчики) создали много подпапок. Мне нужен указатель регулярного выражения для местоположений, чтобы я мог найти кэшируемые файлы.

Я скопировал конфигурацию сайта nginx.

Образец nginx.conf:

location /product/categoryA {
   proxy_pass http://somewhere:8081;
}
location ~* ^/product/categoryA/(.+\.(woff2|woff|jpg|jpeg|gif|png|ico|css|bmp|js|html|htm))$ {
    proxy_hide_header X-Powered-By;
    add_header X-Powered-By DCU;
    proxy_cache STATIC;
    proxy_pass http://somewhere:8081;
}

Примеры кешируемых файлов:

domainabc.com/product/categoryA/desktop/css/somecssfile.css
domainabc.com/product/categoryA/desktop/runable/js/somejsfile.js

При использовании вышеуказанного местоположения эти файлы .css и .js не будут найдены.

Мне нужна помощь для регулярных выражений в местоположении, чтобы nginx мог найти эти файлы без жесткого кодирования подпапок ( .. / desktop / css, ../desktop/runable/js)

Мне все еще нужно " / product / categoryX ", так как есть другие категории, но с другим сервером происхождения.

Спасибо.

1 Ответ

0 голосов
/ 24 января 2019

следующее регулярное выражение ^/product/categoryA/(.+\.woff2|woff|jpg|jpeg|gif|png|ico|css|bmp|js|html|htm))$ из-за ^ в начале будет ловить только те вещи, которые начинаются с /product в начале строки или строки. Если вы удалите ^, он должен поймать нужную вам строку.

То же самое, не $ означает, что это конец строки или строки, и после него нет ничего такого, так что если у вас есть что-то после .css или .js, возможно, их тоже не поймают.

...