web-dev-qa-db-ja.com

jginxをjboss / tomcat用に構成する

Apacheを使用してポート80でJBoss/Tomcatにトラフィックを渡すために、mod_jkをインストールして設定しました。

Nginxに相当するものはありますか?基本的に、すべてのポート80トラフィックがjbossに渡されるようにします。

26
user76328

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;
  }
}
17
Ryan Cox

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がある場合に役立ちます。

3
Marc Climent

nginxのajp_moduleがかなり新しくなりました。経験はありませんが、セッションのスティッキー性、特に永続的なバックエンド接続はTomcatにとって非常に役立ちます。どちらの方法(httpプロキシまたはajpプロキシ)も、長時間実行されるクエリ(comet)または大きなファイル転送(アップロード)には柔軟性がありません。

https://github.com/yaoweibin/nginx_ajp_module#readme

lighttpdBTWには、FCGI、HTTP、CGISおよびAJP13エンコーディングを処理できる一般的なプロキシモジュールがあります。これはより良いアプローチのように見えます(しかし、私が読むことから、典型的ではない長い/大きなリクエスト/レスポンスパターンに関して同じ制限があると思います)。

http://redmine.lighttpd.net/wiki/1/Docs:ModProxyCore

2
eckes

Mod_jkを使用する必要はありません。mod_proxyを使用できます。つまり、AJPの代わりにHTTP経由でトラフィックを渡します。 nginxにプロキシ機能がある場合、それも同様に機能するはずです。

2
skaffman