これは私の状況です。私は別の上流のアプリケーションから来るカスタムロジックを持っているサイトを持っています。私はこれを今問題なく稼働させていますが、私の単純な解決策は少し冗長です。私は間もなく、これらのカスタムロケーションをさらに追加し、これらのロケーションにアクセスする機能を追加するだけでなく、大文字と小文字を追加します。私の解決策はうまくいくが、場所のリストはすぐに扱いにくくなり、私は私の解決策を再考したい。大文字/小文字の場所のNginxルール
私のアップストリームが "myupstream"と呼ばれ、すでにファイルに定義されているとします。私のカスタムの場所は1,2,3、そして4です。 (実際の場所名はそれぞれの保護のために変更されています)。だから、
これらのURL:
http://mysite/one http://mysite/two http://mysite/three http://mysite/four
そして、私のnginx.confで:
location /one {
log_request_speed_filter on;
log_request_speed_filter_timeout 1000;
proxy_pass http://myupstream/one;
proxy_set_header Host $http_host;
}
location /two {
log_request_speed_filter on;
log_request_speed_filter_timeout 1000;
proxy_pass http://myupstream/two;
proxy_set_header Host $http_host;
}
…
etc.
場所のすべては、場所の名前のほかに同じです。
現在、現在の数は数になりますが、数十になることもあります。そして、大文字と小文字の両方の場所を訪問する機能を追加します。だから、:
http://mysite/one http://mysite/ONE http://mysite/two http://mysite/TWO 等...
私はnginx.conf内40個の別の場所のブロックを作成することと思います私の現在の戦略を使用して、20点の場所を持っている場合。だから私はもう少しダイナミックなやり方を模索していました。以下のようないくつかの事:もちろん
location /(one|two|three) {
log_request_speed_filter on;
log_request_speed_filter_timeout 1000;
proxy_pass http://myupstream/$1;
proxy_set_header Host $http_host;
}
が、私は特定のエントリのための唯一の仕事にそれをみたい、そう大きく開いルールが機能しません。また、大文字も検出したいと思いますが、上流を呼び出すときは小文字にする必要があります。たとえば:
はlocation /ONE {
log_request_speed_filter on;
log_request_speed_filter_timeout 1000;
proxy_pass http://myupstream/one;
proxy_set_header Host $http_host;
}
だから、1質問:nginxのでこれを行うには良い方法は
ありますか?どうやって?
質問2:
どのようにリソース/プロセスが効率的ですか?
ありがとうございます。
上記の例で、誰かがhttp://example.com/FOURを呼び出した場合、アップストリームに渡される値は "4"か "4"になりますか?私はそれを "4"にする必要があります。 –
@ R.Smith、私は答えを更新しました –
ありがとう!これはまさに私が必要としたものでした。 –