我在 CentOS 7 上使用 Nginx。我想为以特定扩展名结尾或在 URL 中包含“/image/”字符串的文件添加缓存控制标头。我试过这个
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 语句?
在 nginx 中,如果是邪恶的。但是,如果您真的想这样做,那么您可以这样做:
if ($request_uri ~* "($\/image\/.*)|(.*\.(ico|gif|jpe?g|png)$)") {
本质上,只需结合正则表达式。