nginx を使用して Vaadin Spring アプリケーションの 2 つのインスタンスをデプロイし、リクエストを適切なインスタンスにリダイレクトしようとしています。
最初のサーバーは でwww.example.org/
、2 番目のサーバーは でwww.example.org/second/
、どちらもポート 80 で使用できる必要があります。最初のサーバーはポート 9002 をリッスンし、2 番目のサーバーはポート 9003 をリッスンします。
私のnginx構成は次のようになります:
server_name www.example.org localhost;
root /;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_cookie_path ~*^/.* /;
proxy_pass http://127.0.0.1:9002/;
proxy_redirect off;
}
location /second/ {
proxy_set_header X-Forwarded-Host $host/second;
proxy_set_header X-Forwarded-Server $host/second;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host/second;
proxy_cookie_path ~*^/.* /;
proxy_pass http://127.0.0.1:9003/;
proxy_redirect off;
}
}
最初のサーバーは完全に正常に動作します。
2 番目のサーバーにもアクセスできます。どの URL へのリクエストでも、ログイン ページに正しくリダイレクトされます。ボタンをクリックするとすぐに、セッション期限切れのメッセージが表示されます。/vaadinServlet/UIDL/?v-uiId=0
nginx アクセス ログから、ボタン クリックがコード 200 (OK)に移動して返す POST 要求をトリガーするように見えます。
リクエストは に送るべきだと思います/second/vaadinServlet/UIDL/?v-uiId=0
。したがって、ログインページで立ち往生しています。
vaadinServlet リクエストが間違った URL に送信されるという私の仮定は正しいですか? もしそうなら、どうすれば正しいものに行くことができますか?
nginx を使用して参照 URL から必要な情報を抽出することを考えていますが、このケースを処理するように Vaadin/Spring を構成することは可能であると考えています。