回答:
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;
}
}
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がある場合に便利です。
現在、nginx用のかなり新しいajp_moduleがあります。私はそれを使った経験はありませんが、セッションの粘着性、特に永続的なバックエンド接続はTomcatにとって非常に役立つと思います。両方のメソッド(httpプロキシまたはajpプロキシ)は、長時間実行されるクエリ(comet)または大容量ファイルの転送(uploads)には柔軟性に欠けます。
https://github.com/yaoweibin/nginx_ajp_module#readme
lighttpd BTWには、FCGI、HTTP、CGIS、およびAJP13エンコーディングを処理できる汎用プロキシモジュールがあります。これはより良いアプローチのように見えます(しかし、読むことからは、典型的ではない長い/大きなリクエスト/レスポンスパターンに関して同じ制限があると思います)。