nginxでは変数をセットするときにsetディレクティブを使います。例えば
set $script ""; set $path_info $uri;
というようにです。ところで、このsetディレクティブはngx_http_rewrite_moduleに属します。 つまり、rewrite と組み合わせて
location /download/ { rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break; set $script ""; set $path_info $uri; fastcgi_pass unix:/tmp/fastcgi.sock; }
なんていうことをしていると、rewriteが発動してbreakされた瞬間にrewriteモジュールの評価が終わってしまい、setされません。
location /download/ { rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3; set $script ""; set $path_info $uri; break; fastcgi_pass unix:/tmp/fastcgi.sock; }
というふうに、breakする場所をsetの後にする必要があります。
ハマりました。
0 件のコメント:
コメントを投稿