
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 ステートメントを記述するにはどうすればよいですか?
答え1
nginxでは、悪であればしかし、本当にそのようにしたい場合は、次のようにします。
if ($request_uri ~* "($\/image\/.*)|(.*\.(ico|gif|jpe?g|png)$)") {
基本的には、正規表現を組み合わせるだけです。