为 jboss/tomcat 配置 nginx

为 jboss/tomcat 配置 nginx

为了使用 Apache 将流量传递到端口 80 上的 JBoss/TomCat,我们曾经安装并配置mod_jk

nginx 有等效产品吗?基本上希望所有 80 端口流量都传递到 jboss。

答案1

对于 nginx,请查看其文档这里. 内置代理支持。

在下面来自他们网站的示例中,您将看到特定端口 80 的流量被发送到单身的在端口 8080 上运行的 servlet 容器。

请注意,如果你想运行多种的后端 servlet 容器(用于负载平衡、扩展等...),您应该查看上游公平模块它将把流量发送到最不繁忙的后端服务器。默认情况下,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;
  }
}

答案2

另一种方法就像在像Apache维基页面。

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 而不是 root 进行了测试,并且同样有效,将位置 /myapp 和 proxypasshttp://我的应用:8080/我的应用

同样,此配置将所有内容映射到 Java 应用程序,当您拥有由 Struts 等 MVC 框架映射的良好 URL 时,这很有用。

答案3

您不必使用 mod_jk,您可以使用 mod_proxy,即通过 HTTP 而不是 AJP 传递流量。如果 nginx 具有代理功能,那么应该也可以正常工作。

答案4

现在有一个相当新的 ajp_modulenginx。我没有这方面的经验,但我认为会话粘性,尤其是持久后端连接对 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

相关内容