nginx整合tomcat

本文介绍如何使用Nginx与Tomcat部署JavaEE项目,包括配置Nginx进行反向代理、处理静态资源及负载均衡,同时解决获取客户端真实IP的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 因为nginx处理静态页面的速度很快,并且是免费的,它还可以配置负载均衡的服务器集群来搭建多个tomcat,所以nginx+tomcat是企业搭建javaee项目很好的选择。nginx主要是通过反向代理的方法将jsp,jspx后缀或者是javaee框架设置的特定的页面(.do,.action)请求来交给tomcat处理,自己处理.html,.css或者是一些图片和flash。

 
配置很简单,自己本身监听80端口过来的所有请求,如果发现是.jsp或者是.do后缀的文件请求就交给监听8080端口的tomcat来处理,配置如下:
 
 
 
server
        {
                listen       80;#定义访问的端口号
                server_name www.myhost.com;  #定义访问的域名
                index index.html index.htm index.jsp default.html default.htm default.php;#默认的根目录访问文件
                root  /home/wwwroot/www.myhost.com;#定义服务器访问的默认根目录
 
                location ~ \.(jsp|jspx|do)?$ #tomcat的访问文件后缀
                        {
                                proxy_pass http://127.0.0.1:8080;#反向代理到tomcat监听的端口
                                include proxy.conf
                        }
 
                location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
                        {
                                expires      30d;
                        }
 
                location ~ .*\.(js|css)?$
                        {
                                expires      12h;
                        }
 
                access_log  /home/wwwlogs/www.myhost.com.log  www.myhost.com;
        }
这个是nginx最简单的配置,如果有更多的需求需要参考别的地方。
 
这种默认的配置方法写java代码 request.getRemoteAddr()是获取不到用户访问的真实ip的。只能得到你自己服务器的ip地址,因为nginx转发了请求。注意上面代码中我在 proxy_pass http://127.0.0.1:8080 下面配置了include proxy.conf,所以你需要在nginx目录里proxy.conf里面配置一些东西。
 
 
 
proxy_connect_timeout 300s;
proxy_send_timeout   900;
proxy_read_timeout   900;
proxy_buffer_size    32k;
proxy_buffers     4 32k;
proxy_busy_buffers_size 64k;
proxy_redirect     off;
proxy_hide_header  Vary;
proxy_set_header   Accept-Encoding '';
proxy_set_header   Host   $host;
proxy_set_header   Referer $http_referer;
proxy_set_header   Cookie $http_cookie;
proxy_set_header   X-Real-IP  $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;#后端的 Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy.conf文件配置如上,当然还配置了一些response请求头里面的东西,你可以都加进去。然后你用java代码这个req.getHeader(“X-Forwarded-For”);方法就能获取用户的真实ip了。
 
通过以上的配置nginx这一块就弄好了,你还需要更改一下tomcat的server.xml文件,把tomcat解析javaee项目的目录地址改成和nginx的目录一致。打开tomcat/conf/server.xml文件,把Host标签appBase属性改成nginx配置里面的root默认路径。
 
 
 
 <Host name="localhost"  appBase="/home/wwwroot/www.myhost.com"
 unpackWARs="true" autoDeploy="true">
 
 
以上nginx+tomcat就配置好了,重启tomcat刷新下nginx配置文件,然后把javaee项目放在/home/wwwroot/www.myhost.com目录就可以用80端口测试使用了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值