私は、アプリケーションを区別するために異なるパスを使用して、同じホスト/ポート上で複数のWebアプリケーションをリバースプロキシとして使用しようとしています。例えば -異なるコンテキストパスを持つNginxリバースプロキシ
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl;
proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;
upstream app1 {
server 192.168.0.1:8080;
}
upstream app2 {
server 192.168.0.2:8080;
}
server {
server_name my-application-server;
listen 80;
location /app1/ {
proxy_pass http://app1/;
}
location /app2/ {
proxy_pass http://app2/;
}
}
これは正しく私のアプリの上に個々のページへの要求をプロキシ:
私のnginxの設定ファイルは、以下のようになります。 http://my-application-server/app1/context/login
などがありますが、アプリのハイパーリンクは壊れています(app1
)。彼らはhttp://my-application-server/app1/context/login-success
ではなくhttp://my-application-server/context/login-success
に私を誘導します。
proxy_redirect
とrewrite
のさまざまな値を追加しようとしましたが、これらのリンクを正しく表示することはできません。
私のアプリはTomcatで実行されているJava Webアプリケーションであり、違いがあれば可能です。私はwebappのコンテキストパスを変更することができる他のソリューションを見てきましたが、nginxは、nginxパスを知るように設定する必要なしに、リクエストを透過的にプロキシする必要があります。
あなたの答えをありがとうございます - それは簡単な解決策はありませんが、あなたの答えは私のアプリケーションのルールを理解するのに十分なことを私に与える。 – olambert