搜索
查看: 361|回复: 0

nginx整合tomcat

[复制链接]

432

主题

573

帖子

2543

积分

核心成员

Rank: 8Rank: 8

积分
2543
发表于 2013-9-26 11:21:08 | 显示全部楼层 |阅读模式
因为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端口测试使用了。
您可以更新记录, 让好友们知道您在做什么...
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表