web-dev-qa-db-ja.com

nginxリクエストをTomcatパスにプロキシする方法は?

ドメイン名example.comがあります。 example.comと入力すると、リクエストを127.0.0.1:8080/sourceにプロキシしたい

私のnginx構成

location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_Host;
    proxy_pass         http://127.0.0.1:8080;
 }

これは127.0.0.1:8080で機能しますが、/ sourceサブホストにプロキシすることはできません。に変更すると

proxy_pass http://127.0.0.1:8080/source/;

正しく動作しません。

http://127.0.0.1:8080/source/ にリダイレクトされますが、jsおよびcssファイルのパスは/source/js/ *.jsおよび/source/css/ *.cssであり、その他のリソースファイルは/source/*です。たとえば、ブラウザがhtmlをロードすると、/source/js/ *.jsにリダイレクトするため、http://127.0.0.1:8080/source/を見つけようとします。最終的なパスはhttp://127.0.0.1:8080/source/source/js/ *.jsですが、正しいパスはhttp://127.0.0.1:8080/source/js/ *.jsです。

example.comと入力すると、 http://127.0.0.1:8080/source/)にリダイレクトされるようにしたいだけです。 、またはexample.com/sourceへのリダイレクトも問題ありません。

1
Mattia Dinosaur

あなたの質問の終わりは、あなたがする必要があるのは単一のURIを書き直すことだけであることを示唆しています。これはいくつかの方法で実行できますが、locationrewrite...lastは次のようになります:

location = / {
    rewrite ^ /source/ last;
}
location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_Host;
    proxy_pass         http://127.0.0.1:8080;
}

詳細については、 this および this を参照してください。

2
Richard Smith