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.txt this is a 1.txt on nginx web server! vi /usr/local/nginx/html/index.html index.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.128 x-real-ip 192.168.196.1 x-forwarded-for 192.168.196.1 说明页面是nginx向tomcat请求的,但是tomcat可以得知我们的真实IP,就是x-real-ip和x-forward-for字段.
nginx和tomcat的简单整合
最新推荐文章于 2024-02-27 00:30:58 发布