2

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=0nginx アクセス ログから、ボタン クリックがコード 200 (OK)に移動して返す POST 要求をトリガーするように見えます。

リクエストは に送るべきだと思います/second/vaadinServlet/UIDL/?v-uiId=0。したがって、ログインページで立ち往生しています。

vaadinServlet リクエストが間違った URL に送信されるという私の仮定は正しいですか? もしそうなら、どうすれば正しいものに行くことができますか?

nginx を使用して参照 URL から必要な情報を抽出することを考えていますが、このケースを処理するように Vaadin/Spring を構成することは可能であると考えています。

4

0 に答える 0