nginxでapple-touch-iconをrewriteしたい
nginxでapple-touch-iconをrewriteしたい
解決
rewriteに last を設定する。
location ~ ^/apple-touch-icon-(.*)\.png$ {
rewrite ^(.*)$ /apple-touch-icon.png last;
}
location / {
# railsへリバースプロキシ
}事象
実例で学ぶ、Nginxのrewriteに指定できるbreakとlastの違い | Code & Business より
location ~ ^/apple-touch-icon(.*)\.png$ {
root /tmp/nginx/;
rewrite ^(.*)$ /apple-touch-icon.png break;
}と書いてあったので、
location ~ ^/apple-touch-icon(.*)\.png$ {
rewrite ^(.*)$ /apple-touch-icon.png break;
}
location / {
# railsへリバースプロキシ
}で動かなかった。
原因
break を設定すると、他のlocationを検索しなくなるため。
last は 現在のバーチャルサーバまたはlocationのrewrite ディレクティブの実行を停止しますが、locationの検索は続きます。そして、新しいlocationの rewrite ディレクティブは実行されるでしょう。
break パラメータはbreakディレクティブと同様に 現在のレベルの rewrite ディレクティブの処理を停止し、locationの検索を停止します。そして 新しいlocationのrewrite ディレクティブは実行されないでしょう。