問題タブ [mod-proxy-ajp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tomcat - ajpコネクタを介して不適切に解決されたjsfリソース
JSF2にアプリケーションがあります(Primefacesを使用)。を使用してリソースへの URL を解決するh:outputStylesheet
ため、css へのリンクは次のようになります。
サーバーのTomcatにプロジェクトをデプロイすると、すべて正常に動作します。url を broswer に入力すると、css ファイルが表示されます。
もちろん、次のようなリソースへの直接 URL を使用してアクセスすることもできます。
ポート 80 で受信したリクエストを tomcat に転送するように apache を設定すると、問題が発生します。私は2つのアプローチを試しました:
- mod_jk を使用した ajp
- mod_proxy を使用した ajp
どちらの構成でも、jsf リソースとしてアクセスすると、無効な css ファイルが生成されます。私が置くとき:
次のエラー メッセージが表示されます。
ただし、CSS ファイルへの直接 URL は引き続き機能します。
私の質問は: ajp 構成で見逃したものは何ですか?
ここに設定があります:
ajp ワーカー:
JK を使用した ajp 接続:
プロキシを使用した代替 ajp 接続:
tomcat server.xml
私が使う:
- トムキャット7
- Java 8
- プライムフェイス 4.0
apache - AJP がサーバー エイリアスで動作しない
mod_proxy_ajp を使用して構成された apache と tomcat を持つアプリケーションがあります。以下のように httpd.conf で構成しました。
httpd-proxy.conf には、次のプロキシ構成があります。
Tomcat の server.xml ファイルで、AJP コネクタを次のように構成しました。
ホスト名とIPアドレスでマシンにアクセスすると、リクエストは正常に機能し、Login.jspが表示されます。ただし、以下のように元のサーバー名へのエイリアスを使用して、サーバーとクライアント (ブラウザーが実行されている場所) の両方のホスト ファイルにエントリを追加すると、機能しません。
http://alias1としてリクエストを行うと、リクエストは Login.jsp にリダイレクトされますが、ページが表示されません。ブラウザでは、URL がhttp://alias1/jsp/Login.jspとして表示されますが、ページが表示されません。apache ajp ログでは、応答コードが 200 であることを確認できます。正確にどこに問題があるのか わかりません。誰か助けてください
java - Tamcat+Apache の Java ポータルに mod_proxy_ajp を使用する
Tomcat で Java ポータルを実行していますが、その静的コンテンツ (html を除く) を Apache httpd で提供したいと考えています。Apache httpd をインストールして、httpd.conf を構成しています。以下のテキストのようなものが必要であることはわかっています。
しかし、これはサンプルであり、目的を達成するためにProxyPassMatchの前で RegEx を使用する方法がわかりません。
私の目的は、Apache httpdによるjpg、jpeg、gif、js、cssおよびTomcat によるその他のサービスを提供することです。
apache - mod_proxy_ajpのApache HTTPサーバーでスキームとis_sslをオーバーライドする方法
SSLターミネーターとしても機能するロードバランサーとApache HTTP Server 2.4の背後でTomcat 7を実行しています。Apache はmod_proxy_ajp経由で Tomcat に接続します。
アプリケーションの場合、Tomcat がリクエストが HTTPS 経由で着信していることを認識しているため、安全であることが重要です。たとえば、この記事で推奨されているように、Tomcat のコネクタでこれを構成するには、属性secure="true"
とおそらくを使用するのが一般的scheme="https" proxyPort="443"
です。これは機能しますが、いくつかの目的で HTTP も使用しているため不便です。したがって、この目的のために 2 つの Tomcat コネクタを設定する必要があります。この方法では基本的に、Tomcat に Apache HTTP Server から取得した間違った情報 (要求が HTTP ではなく HTTPS である) をオーバーライドするように指示するため、Apache にプロトコルに関する正しい情報を送信し、安全な状態。
私の質問: AJP プロトコルを介して正しい情報を渡すように Apache HTTP Server 自体を構成することは何とか可能ですか? 要求は HTTPS を介して受信され、安全です? 問題は、その前に SSL ターミネータがあり、要求が HTTP 経由で到着するため、HTTPS であることを認識していないことです。実際に HTTPS であることを Apache に伝えることはできますか?
apache - Bitnami Tomcat スタック接続タイムアウト
AWS で bitnami tomcat スタック (Apache + Tomcat) を使用します。今まではすべてが完璧でした。Webapps の新機能の 1 つは、完了までに 2 分以上の待機時間を必要とします。しかし、実行が停止する前に、Apache は HTTP-500 エラーを送信します。Tomcat コンソールを確認すると、同時に以下のエラーが表示されます。
» 2016 年 5 月 19 日 16:13:27.370 2016 年 5 月 19 日 16:13:27 +0530、(FrameworkServlet.java:984) DEBUG: 要求を完了できませんでした。ClientAbortException: java.net.SocketException: org.apache でパイプが壊れています。 catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:413) は org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480) でByteChunk.java:366) org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:438) org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:426) org.apache.catalina .connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91)
複数のサンプル リクエストを試してみると、HTTP-500 が 60 秒待った直後に受信されたことがわかりました。
Tomcat server.xml
Tomcat.conf
Linux ボックスのタイムアウトを確認すると、2 時間であることがわかりました。Apache または Apache-Tomcat コネクタのタイムアウトの問題である可能性があります。これらの構成は、bitnami スタックのどこにあり、変更できます。
apache - GWT サーブレットからの AJP 要求データへのアクセス
Shibboleth ベースの承認を実装する GWT アプリケーションを作成しようとしています。最終的には「本番モード」で提供する必要があるため、Tomcat7 を使用してアプリケーションを実行することを選択しましたが、クライアントは Apache2 に接続し、Apache2 はリクエストを AJP 経由で (を使用してmod_proxy_ajp
) Tomcat に転送します。
アプリケーションを提供する基本的なタスクは機能します。ただし、何らかの方法で Shibboleth によって設定された環境変数にアクセスする必要があります。Shibboleth のドキュメントによると、環境変数は、プレフィックスが付けられている場合 (プレフィックスは削除されます)、Tomcat に転送されるAJP_
ため、設定したすべての環境変数にそのプレフィックスを追加するように、Shibboleth を構成しました (すべての環境変数を単純に出力する PHP スクリプトを使用して確認したので、これは機能します)。
問題は、Tomcat に到達したときに環境変数が環境変数として使用できなくなり、(mod_proxy_ajp
ドキュメントで説明されているように) AJP リクエスト属性として提供されることになっていることです。
どうやら、これらの種類の属性は、次のようなものを使用してアクセスすることになっています
サーブレット内から。私のPHPスクリプトは呼び出された環境変数をリストしていますAJP_uid
が、上記の呼び出しは返されますnull
が、私が理解していることから、環境変数と同じ値を返す必要がありますAJP_uid
。
確かに、何らかの理由でプレフィックスがドロップされなかった場合のAJP_uid
代わりに、上記の呼び出しも試しましたが、うまくいきませんでした。uid
私は何を間違っていますか?
apache - プロキシとしてApacheを使用して、Jetty上のアプリケーションにshibboleth sp属性を渡す
Jetty 組み込みで実行されているいくつかのスプリング ブート アプリケーションがあります。また、Apache サーバーで Shibboleth SP を実行しています。
AJP 経由でアサーション属性を Tomcat に渡すことはできますが、Jetty9 は AJP をサポートしていないため、同じことはできません。
アサーション属性が Jetty で実行されているアプリケーションに渡されるように、Apache を構成する方法を知りたいです。
apache - CSS、JS、およびその他の静的コンテンツが、Apache ロード バランサを使用する liferay 7 でロードされない
Liferay 7.0 GA3 バージョンを使用し、リバース プロキシとして Apache 2.4 を使用しています。両方のサーバーが Windows 2012 R2 にインストールされており、liferay のホームページを読み込んでいるときに、すべての JS、CSS、およびその他の静的コンポーネントが表示されず、代わりに HTTP 500 エラーが発生するという問題に直面しています。
Apache config - (2 つの異なる VM で実行されている 2 つの Liferay サーバーの負荷分散)
httpd.conf -
httpd-ssl.conf -
両方のサーバーで tomcat server.xml を変更しました -
ブラウザで以下のエラーが発生しています -
Apache エラー ログ -
失敗した Apache URL の 1 つに直接別のブラウザー ウィンドウにアクセスしようとすると、次の Respnse ヘッダーで HTTP 500 エラーが発生します -
リクエスト URL: https://my.server.com/o/mentions-web/css/mentions.css
応答ヘッダー
代わりに Tomcat に接続する同じ URL を試すと (Apache をバイパスするため)、次の応答ヘッダーで HTTP 200 を取得しています -
リクエスト URL: http://my.server.com:8080/o/mentions-web/css/mentions.css
応答ヘッダー
注意すべきことの 1 つは、負荷分散構成を削除して、1 つの apache インスタンスを 1 つの liferay サーバーに接続しようとすると、すべて正常に動作することです。
Apache 側の設定に問題があるように見えますか? 助けてください。