为jboss / tomcat配置nginx


26

为了使用Apache将流量通过端口80传递到JBoss / TomCat,我们使用安装和配置mod_jk

Nginx是否具有等效功能?基本上希望所有端口80流量都传递给jboss。


您可以查看我的博客文章有关将Nginx配置为Tomcat的反向代理。您可能会很感兴趣,因为该示例包括一些其他的调整,因为仅针对未登录的用户缓存内容并针对不同的语言进行重定向来缓存内容。
弗拉基米尔·格里奇纳

Answers:


17

对于nginx,请在此处查看其文档。内置了代理支持。

在其站点的以下示例中,您将看到特定的端口80流量被发送到在端口8080上运行的单个 servlet容器。

请注意,如果您想运行多个后端servlet容器(用于负载平衡,扩展等),则应查看将向最繁忙的后端服务器发送流量的上游公平模块。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;
    }
}

我也已经使用/ myapp而不是root测试了它,并且也很好地工作了,将位置/ myapp和proxypass设置为http:// myapp:8080 / myapp

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


2

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


7
代理的问题是它比mod_jk / fastcgi / ajp慢
Adam Gent 2010年

2

现在为nginx提供了一个非常新鲜的ajp_module 。我没有经验,但是我认为会话粘性,尤其是持久的后端连接对Tomcat很有帮助。遗憾的是,这两种方法(http代理或ajp代理)对于长时间运行的查询(comet)或大型文件传输(上载)都不灵活。

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

lighttpd BTW具有通用代理模块,可以处理FCGI,HTTP,CGIS和AJP13编码。这看起来是一种更好的方法(但是我认为从阅读的角度来看,对于不典型的长/大请求/响应模式,它具有相同的限制)。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.