因为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默认路径。
以上nginx+tomcat就配置好了,重启tomcat刷新下nginx配置文件,然后把javaee项目放在/home/wwwroot/www.myhost.com目录就可以用80端口测试使用了。
流云小石


