実現したいこと
クライアントからのリクエストをNginxのupstreamでプロキシしたい
困っていること
リクエストのパスがプロキシ先と異なる場合にどのように修正するのが良いかわからずご教示いただきたいです。
サーバ構成は以下のようになっています。
text
1======== =============== ========= 2|client| -> | nginx-server| -> |backend| 3======== =============== =========
今、クライアント(client)のアプリからNginxサーバ(nginx-server)に http://nginx-server/test
というURLでGETリクエストがくると仮定します。
以下のような nginx.conf にすると、上記のリクエストは https:/example.com:443/test
としてプロキシされる認識です。
nginx.conf
1 2user nginx; 3worker_processes auto; 4error_log /var/log/nginx/error.log; 5pid /run/nginx.pid; 6 7include /usr/share/nginx/modules/*.conf; 8 9events { 10 worker_connections 1024; 11} 12 13http { 14 upstream backend { 15 server example.com:443; 16 } 17 18 server { 19 location /test { 20 proxy_pass https://backend; 21 proxy_set_header Host example.com; 22 proxy_redirect off; 23 } 24 25 location /hoge { 26 proxy_pass https://backend; 27 proxy_set_header Host example.com; 28 proxy_redirect off; 29 } 30 } 31}
この場合に
クライアントからのリクエストURL | プロキシ先URL | コメント |
---|---|---|
http://nginx-server/test | https:/example.com:443/another-test | パスを変更 |
http://nginx-server/hoge | https:/example.com:443/hoge | パスはそのまま |
とプロキシします。
考えていたこと
何かしらのパスのrewriteや、リダイレストをする必要があると思っていますが、例えば以下のように nginx.conf を修正すると無限にリダイレクトされてしまうのでどうしたものかと...。
http { upstream backend { server example.com:443; server example.com:443; } server { location / { proxy_pass https://backend; proxy_set_header Host example.com; rewrite /.* another-test permanent; } location /hoge { proxy_pass https://backend; proxy_set_header Host example.com; proxy_redirect off; } } }
例えばパスを書き換えるクライアントからのリクエストの場合は、以下のように upstream を使わずに構成しないといけないのでしょうか?
(これは可用性の観点からビミョウですが...)
http { upstream backend { server example.com:443; server example.com:443; } server { location /test { proxy_pass https://example.com/another-test; proxy_redirect off; } location /hoge { proxy_pass https://backend; proxy_set_header Host example.com; proxy_redirect off; } } }
宜しくおねがいします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/10 04:37