jboss / tomcat用にnginxを構成する


26

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

nginxに相当するものはありますか?基本的に、すべてのポート80トラフィックをjbossに渡す必要があります。


TomcatのリバースプロキシとしてNginxを構成することに関するブログ投稿を確認できます。たとえば、ログインしていないユーザーのコンテンツのみをキャッシュし、異なる言語にリダイレクトするなど、追加の微調整がいくつか含まれているため、興味深いかもしれません。
ウラジミールグリチーナ

回答:


17

nginxのチェックアウトについては、こちらのドキュメントをご覧ください。プロキシサポートが組み込まれています。

以下のサイトの例では、特定のポート80のトラフィックがポート8080で実行されている単一のサーブレットコンテナに送信されていることがわかります。

(負荷分散、スケーリングなどのために)複数のバックエンドサーブレットコンテナを実行する場合は、トラフィックを最もビジーでないバックエンドサーバーに送信するUpstream Fair Moduleを確認する必要があります。defaul w / 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;
  }
}

3

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;
    }
}

rootの代わりに/ myappで同様にテストし、同様に動作します。場所/ myappとproxypass http:// myapp:8080 / myappを置きます

同様に、この構成はすべてをJavaアプリケーションにマップします。これは、StrutsなどのMVCフレームワークによってマップされる素敵なURLがある場合に便利です。


2

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


7
プロキシの問題は、mod_jk / fastcgi / ajpよりも遅いことです
Adam Gent

2

現在、nginx用のかなり新しいajp_moduleがあります。私はそれを使った経験はありませんが、セッションの粘着性、特に永続的なバックエンド接続はTomcatにとって非常に役立つと思います。両方のメソッド(httpプロキシまたはajpプロキシ)は、長時間実行されるクエリ(comet)または大容量ファイルの転送(uploads)には柔軟性に欠けます。

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.