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/")"を削除すると、すべてが正常に再起動しますが、必要なものを一致させることができません。構成ファイルに適切なステートメントを書き込むにはどうすればよいですか?
Nginxでは、 もし悪なら 。しかし、本当にそのようにしたい場合は、次のようにします。
if ($request_uri ~* "($\/image\/.*)|(.*\.(ico|gif|jpe?g|png)$)") {
基本的に、正規表現を組み合わせるだけです。