私はnginxのマップを使用しようとしていますが、結果は期待した通りではありません。Nginxマップは私の正規表現の引数を使用していません
これは私が持っているものです。
map $uri $new {
default "";
~*/cc/(?P<suffix>.*)$ test.php?suffix=$suffix;
}
location ~ [a-zA-Z0-9/_]+$ {
proxy_pass http://www.domain.com:81/$new;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
私はwww.domain.com/cc/abcに行くとき、私は
2012/03/29 17:27:53 [warn] 3382#0: *33 an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/5/00/0000000005 while reading upstream, client: 1.2.3.4, server: www.domain.com, request: "GET /cc/abc HTTP/1.1", upstream: "http://1270.0.0.1:81/test.php?suffix=$suffix", host: "www.domain.com"
ログで確認$サフィックスではありません置き換えられました。私はこれを行うとき
は、しかし:だから
2012/03/29 17:29:39 [warn] 5916#0: *26 an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/2/00/0000000002 while reading upstream, client: 1.2.3.4, server: www.domain.com, request: "GET /cc/abc HTTP/1.1", upstream: "http://1270.0.01:81/abc", host: "www.domain.com"
:
map $uri $new {
default "";
~*/cc/(?P<suffix>.*)$ $suffix;
}
location ~ [a-zA-Z0-9/_]+$ {
proxy_pass http://www.domain.com:81/$new;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
そして今の私がwww.domain.com/cc/abcに行くために行くときに、ログが私にこのショー書き換えに変数を含む文字列が含まれている場合、置換されません。しかし、それが変数だけを含んでいれば、それはうまくいくでしょう。
私は間違っていますか?
をうまくいくように、1.11.0のとおり、マップの値は、複素数値であることができうーん、それは残念だ:(思想、彼らははるかに高速に書き換えた後ですので、私は、マップを使用することができ I。明日書き直しをするつもりですが、それが動作すれば教えてくれるでしょう。 –
Btw、なぜドキュメントにはそれが可能な例がありますか?http://wiki.nginx.org/HttpMapModule だからこそ マップを使用してサーバーセクションの値を書き換えても、それは可能ですか? –
wikiが間違っています。その例を削除します。ありがとう – kolbyjack