Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二

继上一节实验了一个基本的tomcat + nginx负载均衡效果后,这一节更进一步,完成以下两个内容的改进

  • 动静分离
  • web项目部署进tomcat
一、新建一个用来部署的maven web项目
首先用idea新建一个基本的maven web项目
Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

这样就完成了一个基本maven单模块的web项目的搭建
下面在新增一个前台jsp页面和一个后台servlet处理类
index.jsp
登录 - 锐客网
用户名:
密码:

HelloServlet

import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * HelloServlet * @author zhaoxing * 2018年7月13日11:24:35 */ @WebServlet(urlPatterns = "/hello") public class HelloServlet extends HttpServlet {@Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String userName = req.getParameter("username"); String passWord = req.getParameter("password"); resp.setContentType("text/html; charset=UTF-8"); PrintWriter printWriter = resp.getWriter(); printWriter.println(""); if ("admin".equals(userName) && "admin".equals(passWord)) { printWriter.println("登录成功!欢迎您," + userName); } else { printWriter.println("用户名或者密码错误!"); } printWriter.println(""); } }

用maven打包(package)项目
Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

在生成目录中看到已经生成了一个对应的war包
Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片


二、把步骤一打好的war包扔到Linux服务器$tomcat_home/webapp目录下

1. 首先把war包该成项目名,即HelloWorld.war
2. 分别上传到tomcat1和tomat2的webapp目录下
三、把静态资源文件放到nginx的资源路径下
[root@bogon HelloWorld-1.0-SNAPSHOT]# cd /usr/local/nginx/html/ [root@bogon html]# ls 50x.htmlimagesindex.html [root@bogon html]# ls images/ girl2.jpggirl.jpg

这里看到新建了一个图片目录,放了两张图片。
四、配置nginx,对动态资源和静态资源分别处理
之前开发web方面的程序时候我们习惯将html、css等资源文件也放置于Tomcat之中,用户发起访问后,tomcat需要将请求的这些静态资源文件一并返回给用户,这样如果同一个应用部署在多台tomcat服务器时,相同的静态资源在每个服务器上都有一份,增加了tomcat服务器的网络IO和磁盘空间,相当不合理。如果我们只讲JSP之类的请求交给tomcat,而反向代理服务器上存放静态资源,当用户请求静态资源时,前端反向代理服务器就可以直接将静态资源返回给用户,而不用去请求tomcat,一方面可以降低后端服务器的压力,一方面可以提高静态资源响应效率。
处理流程如下图所示:
Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片


配置如下:
upstream myTomcatServer { server localhost:8080 weight=1; server localhost:8081 weight=3; }server { listen80; server_namelocalhost; #charset koi8-r; #access_loglogs/host.access.logmain; location ~ .*\.(js|css|png|jpg) { roothtml; expires 30d; #缓存30天 }location / { roothtml; indexindex.html index.htm; proxy_pass http://myTomcatServer; }}


使配置文件生效
[root@bogon nginx]# ./sbin/nginx -s reload

五、访问页面
直接访问还是会访问到tomcat下的index页
Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

访问tomcat下部署的HelloWorld项目,通过nginx反向代理也可以正常访问
Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

输入正确密码
Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

输入错误密码
Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

接下来直接访问静态资源,没问题(顺便看看美女放松下心情)
Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二
文章图片

【Nginx|CentOS 下 Nginx + Tomcat 配置负载均衡之二】

    推荐阅读