
Я использую Nginx на CentOS 7. Я хочу добавить заголовок управления кэшем для файлов, которые заканчиваются на определенное расширение или содержат строку "/image/" в URL. Я попробовал это
location / {
proxy_pass http://scale; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ($request_uri ~* ".(ico|gif|jpe?g|png)$") | ($request_uri ~* "/image/") {
expires 60d;
access_log off;
add_header Pragma public;
add_header Cache-Control "public";
break;
}
}
но после перезапуска сервера я получаю
invalid condition "$request_uri" in /etc/nginx/conf.d/scale.conf:16
ошибка. Если я удаляю " | ($request_uri ~* "/image/")" из проблемной строки, все перезапускается нормально, но затем я не могу сопоставить то, что мне нужно. Как мне написать правильный оператор or в моем файле конфигурации?
решение1
В nginx,если это зло. Но если вы действительно хотите сделать это таким образом, вот как это сделать:
if ($request_uri ~* "($\/image\/.*)|(.*\.(ico|gif|jpe?g|png)$)") {
По сути, просто объедините регулярные выражения.