2

連携させるために、フロントエンドで NGINX を構成し、バックエンドで Tomcat を構成しようとしています。

Tomcat server.xml を 2 つのコネクタで構成しました。

<Connector port="8443" protocol="HTTP/1.1" scheme="https" secure="true" proxyPort="443" proxyName="www.myhost.com" connectionTimeout="20000" URIEncoding="UTF-8" />


<Connector port="8080" protocol="HTTP/1.1" scheme="http" proxyPort="80" proxyName="www.myhost.com" connectionTimeout="20000" URIEncoding="UTF-8" />

私の NGINX サーバーは、ユーザーがhttp://www.myhost.comおよびhttps://www.myhost.com で私の Web サイトを呼び出すと、リクエストを受け取ります。各呼び出し (キャッシュを除く...) で、NGINX は、元の要求のスキーム (http または https) に応じて、8080 ポートまたは 8443 で Tomcat サーバーに要求を送信します。

正常に動作しますが、Tomcat は私の webapp に間違った情報を提供しているようです (実際、私の webapp は Liferay です)。間違ったサーバーホストを提供します。

たとえば、http ://www.myhost.com でサーバーを呼び出すと、NGINX は8080ポートで Tomcat を呼び出しますが、Liferay は不適切なサーバー ホスト (http* s *://www.myhost.com ) でリクエストを受信するようです。 /)。Liferay は、このサーバー ホストを使用してリンクを構築します。実際、Liferay が構築しているすべてのリンクは、次のパターンに一致します: http* s *://www.myhost.com/....

私によると、私の構成では、次のように動作するはずです:

  • Tomcat は 8080 ポートでリクエストを受信します。
  • Tomcat は、私の呼び出しがhttp://www.myhost.comにあったという事実を理解しています。
  • Tomcat がポート (8080) でメッセージを受信したため、Tomcat は Liferay Web アプリケーションに proxyHost (www.myhost.com) と proxyPort (80) を提供する必要があります (Liferay は request.getServerPort() と request.getServerHost() を使用してこれらの情報を取得する必要があります) Tomcat構成
  • Liferay は、これらの情報を考慮してリンク URL (メニュー...) を作成する必要があります。

これが私の問題です。Liferay は間違った設定を取得します: https スキームのものです。

この投稿を使用して、ubuntu 12.04 に NGINX Install nginx を構成し、それを Tomcat に接続しました。この投稿では、https でこれを行う方法については説明していません。私の文脈では、http と https に対して 2 回書きました。

誰かがすでにこの問題を解決しましたか?

4

2 に答える 2

0

これは推奨される方法ではありません。NGINX (私の場合はポンド) のようなプロキシがある場合、SSL レイヤーはプロキシに任せる必要があります。これにより、プロキシは HTTP ヘッダーを調べて、ユーザーがクラスター外の単一の tomcat Web サーバーにとどまる「スティッキー」セッションを提供できます。

私の場合、Tomcat に localhost:8080 でリッスンさせます。パウンドは外部 ip:80 でリッスンし、https へのリダイレクトのみを返します (外部 ip:443) パウンドは外部 ip:443 でもリッスンし、SSL を復号化し、8080 で tomcat にプロキシします(実際には tomcat のクラスター)

また、portal-ext.properties でいくつかのパラメータを設定する必要があります:
web.server.http.port=80
web.server.https.port=443
web.server.protocol=https

これにより、SSL プロキシのパブリック インターフェイスと一致するポート 443 ですべてのリンクを HTTPS として生成するように LifeRay に指示します。

問題は、8080 で tomcat に直接接続すると、LifeRay が「間違った」リンクを生成し、プロキシに送信することです。私はまだこれを回避する方法を見つけていません。

于 2013-05-23T15:38:43.167 に答える