2017-07-27 17 views
0

nginxでバックエンドと一致する場合は特定のURIを転送しようとしています。たとえば、前方前方一致する特定の場所とプロキシはnginxでリダイレクトします

https://www.hostname.com/*/A/B/Chttps://int.hostname.com/*に/ A/B/Cについて(*は正規表現から移入変数autoである場合には)

現在の構成は以下のように見えると見当がつかないあなたの場所が/a/b/c/で終わる任意のURIを一致させたい場合は

location /a/b/c/ { 
    proxy_set_header  Host $proxy_host; 
    proxy_set_header  X-Forwarded-Proto $scheme; 
    proxy_set_header  X-Real-IP $remote_addr; 
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_read_timeout  180m; 

    proxy_pass http://int.hostname.com/v2/e/t/a/b/c; 
    proxy_redirect default; 
} 
+0

あなたが内部サーバ上の同じパスに送信し、またはいくつかの変更がありますされているURIの一致「/ */A/B/C」の場合には、明確にします?例えば誰かが/ v1/a/b/cを押すと、あなたは内部の/ v1/a/b/cとちょうど話していますか?何らかの形で重要な "/ v1"部分です –

+0

@JoshuaDeWald同じです。/v1/a/b/cは/ v1/a/b/cとしてバックアップされます。同様に、/ sample/v2/a/b/cは/ sample/v2/a/b/cとして渡されます。 *は任意のパスを意味します。 ありがとう、 – Err0rr

答えて

1

の上に進めるためにどのように、あなたは正規表現構文を使用する必要があります。詳細はthis documentを参照してください。

proxy_passステートメントのURIサフィックスはオプションです。 URIサフィックスがない場合、元のURIは変更されずに渡されます。詳細はthis documentを参照してください。例えば

location ~ /a/b/c/$ { 
    ... 
    proxy_pass http://int.hostname.com; 
    ... 
} 
+0

ありがとう、私はこれらのドキュメントを見ていきます。あなたはproxy_passに何かを書く必要があるのですか?実際には、URIは/ a/b/c /で終わることはできません。これを考慮して、それで終わらなければ何をすべきか? – Err0rr

+0

'/ a/b/c /'はURIのどこにでも埋め込まれていますか?その場合は、 '$'を取り除いてください。 –

+0

ええ、それはそうですし、バックエンドにもまったく同じように転送する必要があります。 URIが '/ a/b/c /'の内容でなければ、URIをバックエンドに転送すべきではありません。私はこれがうまくいきたいもし私が世話をしなければならないものがあれば教えてください。私はそれをテストします。 – Err0rr

関連する問題