Apacheを使用してポート80でJBoss/Tomcatにトラフィックを渡すために、mod_jk
をインストールして設定しました。
Nginxに相当するものはありますか?基本的に、すべてのポート80トラフィックがjbossに渡されるようにします。
Nginxのチェックアウトについては、ドキュメント here をご覧ください。プロキシサポートが組み込まれています。
以下のサイトの例では、ポート8080で実行されているsingleサーブレットコンテナに特定のポート80トラフィックが送信されていることがわかります。
multipleバックエンドサーブレットコンテナー(負荷分散、スケーリングなど)を実行する場合は、 アップストリームフェアモジュール トラフィックの最も少ないバックエンドサーバーにトラフィックを送信します。 nginx付きのデフォルトでは出荷されません。
server {
listen 80;
server_name YOUR_DOMAIN;
root /PATH/TO/YOUR/WEB/APPLICATION;
location / {
index index.jsp;
}
location ~ \.do$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_Host;
}
location ~ \.jsp$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_Host;
}
location ^~/servlets/* {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_Host;
}
}
LikeApache wikiページで説明されているようにそれを行う別の方法。
server {
listen myhost:80;
server_name myhost;
location / {
root /path/to/myapp/public;
proxy_set_header X-Forwarded-Host $Host;
proxy_set_header X-Forwarded-Server $Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://myapp:8080;
}
}
ルートの代わりに/ myappを使用して同様にテストしたところ、場所/ myappとproxypass http:// myapp:8080/myapp を指定して機能しました。
また、この構成はすべてをJavaアプリケーションにマップします。これは、StrutsのようなMVCフレームワークによってマップされたNice URLがある場合に役立ちます。
nginxのajp_moduleがかなり新しくなりました。経験はありませんが、セッションのスティッキー性、特に永続的なバックエンド接続はTomcatにとって非常に役立ちます。どちらの方法(httpプロキシまたはajpプロキシ)も、長時間実行されるクエリ(comet)または大きなファイル転送(アップロード)には柔軟性がありません。
https://github.com/yaoweibin/nginx_ajp_module#readme
lighttpdBTWには、FCGI、HTTP、CGISおよびAJP13エンコーディングを処理できる一般的なプロキシモジュールがあります。これはより良いアプローチのように見えます(しかし、私が読むことから、典型的ではない長い/大きなリクエスト/レスポンスパターンに関して同じ制限があると思います)。
Mod_jkを使用する必要はありません。mod_proxyを使用できます。つまり、AJPの代わりにHTTP経由でトラフィックを渡します。 nginxにプロキシ機能がある場合、それも同様に機能するはずです。