|
因为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端口测试使用了。
|
|