nginx和tomcat的简单整合

来源:互联网 发布:2010年湖人季后赛数据 编辑:程序博客网 时间:2024/05/16 19:39
centos上nginx和tomcat的简单整合nginx可以和tomcat在同一台服务器上,公用一个web主目录,实现动静分离;它们两个也可以不在一台服务器上,nginx处理html,js,css,jpg,png,rar,gif,doc,pdf等静态资源,tomcat专门处理jsp动态语言.我这里测试nginx和tomcat不在一台服务器上,nginx实现对tomcat的反向代理.    我的两台虚拟机都是centos6.4最小化安装.    vm1  192.168.196.127   nginx    vm2  192.168.196.129   tomcat    1.vm1上安装nginx,首先到http://nginx.org/en/download.html 下载最先的nginx.确定你十分安装编译工具,如果没有安装,使用yum安装编译工具gcc,cc,make等.    #yum groupinstall "Development Tools" "Development Libraries" -y    编译安装命令    #tar -zxvf nginx-1.5.1.tgz    #cd nginx-1.5.1    #./configure --with-pcre --prefix=/usr/local/nginx --with-http_stub_status_module && make && make install    vm2上安装tomcat    #yum install tomcat6 -y    2. 配置tomcat,我这里只关心Host段    vi /etc/tomcat6/server.xml      <Host name="localhost"  appBase=""            unpackWARs="true" autoDeploy="true"            xmlValidation="false" xmlNamespaceAware="false">        <Context path="" docBase="/etc/tomcat6/webapps/" debug="0" reloadable="true" caseSensitive="false">        </Context>      </Host>      #mkdir /etc/tomcat6/webapps      3.下面我们建立两个页面 index.html和index.jsp(打印tomcat环境变量)      vi /etc/tomcat/webapps/index.html      This is Tomcat6 webserver index.html      vi /etc/tomcat6/webapps/index.jsp<%@ page session="false" import="java.util.*" %><%!Enumeration enumNames;String strName,strValue;%><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title获取各种CGI环境变量</title></head><body><table border=1 cellspacing=0 cellpadding=0 align=center><tr>  <th>Name</th>  <th>Value</th></tr><%enumNames = request.getHeaderNames();while(enumNames.hasMoreElements()){    strName = (String)enumNames.nextElement();    strValue = request.getHeader(strName);%><tr>  <td> <%=strName%></td>  <td> <%=strValue%></td></tr><%}%><tr>  <th>Name</th>  <th>Value</th></tr><tr>  <td> CharacterEncoding</td>  <td> <%=request.getCharacterEncoding()%></td></tr><tr>  <td> CONTENT_LENGTH</td>  <td> <%=request.getContentLength()%></td></tr><tr>  <td> CONTENT_TYPE</td>  <td> <%=request.getContentType()%></td></tr><tr>  <td> SERVER_PROTOCOL</td>  <td> <%=request.getProtocol()%></td></tr><tr>  <td> REMOTE_ADDR</td>  <td> <%=request.getRemoteAddr()%></td></tr><tr>  <td> REMOTE_HOST</td>  <td> <%=request.getRemoteHost()%></td></tr><tr>  <td> Scheme</td>  <td> <%=request.getScheme()%></td></tr><tr>  <td> SERVER_NAME</td>  <td> <%=request.getServerName()%></td></tr><tr>  <td> SERVER_PORT</td>  <td> <%=request.getServerPort()%></td></tr><tr>  <td> AUTH_TYPE</td>  <td> <%=request.getAuthType()%></td></tr><tr>  <td> REQUEST_METHOD</td>  <td> <%=request.getMethod()%></td></tr><tr>  <td> PATH_INFO</td>  <td> <%=request.getPathInfo()%></td></tr><tr>  <td> PATH_TRANSLATED</td>  <td> <%=request.getPathTranslated()%></td></tr><tr>  <td> QUERY_STRING</td>  <td> <%=request.getQueryString()%></td></tr><tr>  <td> REMOTE_USER</td>  <td> <%=request.getRemoteUser()%></td></tr><tr>  <td> REQUEST_URI</td>  <td> <%=request.getRequestURI()%></td></tr><tr>  <td> SCRIPT_NAME</td>  <td> <%=request.getServletPath()%></td></tr></table></body></html>4.vm2上配置nginx反向代理注释掉/usr/local/nginx/etc/nginx中所有的server{}段,我们新加一个server{}upstream jsp {                server 192.168.196.129:8080;        }        server {                listen 80;                server_name localhost defalut_server;                location ~* \.(jpg|txt|png|gif|rar|html|pdf|doc|exe) {                        root /usr/local/nginx/html;                }                location / {                        proxy_pass http://jsp;                        proxy_redirect off;                        proxy_set_header Host $host;                        proxy_set_header X-Real-IP $remote_addr;                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                }        }如果后端有多台tomcat服务器,我们只需要在upstream中加入 server x.y.z.a:8080;就可以实现负载均衡了,默认是1:1负载均衡.如果我们在server 192.168.196.129:8080加入weight=10的方式可以修改几台服务器的权重,服务器配置好的,权重应该大一些.处于多台后端服务器session的问题,我可以可以在最下面加入upstream中加入ip_hash使单个IP使用固定的后端服务器在实际的应用中,我们可以通过rsync+inotify把tomcat上的web主目录/etc/tomcat/webapps实时同步到nginx主机/usr/local/nginx/html上.我们同时也在nginx服务器上建立一个文件vi /usr/local/nginx/html/1.txtthis is a 1.txt on nginx web server!vi /usr/local/nginx/html/index.htmlindex.html on nginx!访问测试http://192.168.196.128  我们会发现它会访问到nginx上的index.html页面访问测试http://192.168.196.128/1.txt 我们也会发现是nginx上的1.txt访问测试http://192.168.196.128/index.jsp 我们会发现是tomcat上的jsp,并且会显示host 192.168.196.128x-real-ip 192.168.196.1x-forwarded-for 192.168.196.1说明页面是nginx向tomcat请求的,但是tomcat可以得知我们的真实IP,就是x-real-ip和x-forward-for字段.
0 0
原创粉丝点击