因为nginx处理静态页面的速度很快,并且是免费的,它还可以配置负载均衡的服务器集群来搭建多个tomcat,所以nginx+tomcat是企业搭 建javaee项目很好的选择。nginx主要是通过反向代理的方法将jsp,jspx后缀或者是javaee框架设置的特定的页面 (.do,.action)请求来交给tomcat处理,自己处理.html,.css或者是一些图片和flash。
?
Nginx与Tomcat整合的好处如下所示:
◆静态分离,加快用户访问网站的速度。
◆整个负载均衡层和Web层的工作流程为LVS/DR+Keeaplived→Nginx反向代理(动静分离)→Tomcat集群,可以保证整个网站不会因为某一台LVS或Nginx+tomcat机器挂掉而影响网站的运营。
◆Nginx稳定,宕机的可能性微乎其乎。
?
配置很简单,自己本身监听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;
? ? ? ? }
? ? ? ? {
? ? ? ? ? ? ? ? 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 p