简单东西:Nginx 实现 Tomcat 负载均衡

基本概念

百度百科上定义 Nginx 是这样的:

Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行。由俄罗斯的程序设计师 Igor Sysoev 所开发,供俄国大型的入口网站及搜索引擎 Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 Nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

今天用 Nginx 和Tomcat 实现了一个简单的负载均衡的例子,记录如下。

准备Tomcat 应用

前两天整理 websocket 时用的一个简单项目,修改 server.xml 中的端口为 8080,启动
Tomcat ,JSP 页面引用 jquery1.9.js 。现在验证下这个静态资源请求分发的情况。

    <script type="text/javascript" src="/jquery1.9.0.js"></script>
    <script type="text/javascript">

直接访问 Tomcat 请求,由于项目路径中没有该文件,所以报404错误:
这里写图片描述

添加配置

使用 Nginx 实现 Tomcat 请求的动静资源分离,在 Nginx 安装目录下的 html 目录中放入 jquery1.9.js 这个文件:
这里写图片描述

修改 nginx.conf ,在 http 节点中添加如下配置:

   upstream local_tomcat {
	   server localhost:8080;
    } 
	
    server {
        listen       80;
	server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
		
	# 所有静态请求都由 nginx 处理,存放目录为 html
	location ~ \.(gif|jpg|jpeg|png|bmp|swf)$ {
		root	html;
	}
	
	# 所有动态请求都转发给 tomca t处理
	location ~ \.(jsp|do)$ {
		proxy_pass	http://local_tomcat;
	}
	
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

从 Nginx 服务器的响应行为来看,这个配置文件就是配置 Nginx 请求处理规则,Server定义的是 Nginx 服务器的信息,它监听 80 端口和 443 端。对 80 端口的情况是这样的:

  1. upstream:负载均衡模块,配置主机列表;
  2. location / :所有的 / 请求最终转发到根目录 和 index 模块;
  3. location ~ .(jsp|do) 转发到 http://local_tomcat目录(这里的 local_tomcat 就是upstream这个配置里面的名称 local_tomcat;
  4. location ~ .(gif|jpg|jpeg|png|bmp|swf) 所有的静态资源文件都转发到根目录。

进入Nginx 目录,启动它:start nginx,访问主页面 http://localhost/ 进入主页面:
这里写图片描述
再次通过 Nginx 访问 Tomcat 应用:
这里写图片描述

此时这个 jquery1.9.js 文件的请求是先被 Nginx 服务器解析的,所以能正确访问到。

启示录

上周六参加的那个架构大会,好几位讲师的 PPT 框架中的负载均衡实现方式中都有Haproxy 和 Nginx,以前也听过 Nginx 服务器,但是没有深入了解过,所以就有了本文的实验操作。

没有系统地看过它的资料,单从实验过程来看,还是能得出一点编程注意事项的。例如:要结合 Nginx ,实现 Tomcat 动、静资源分离功能,那么在开发过程中就需要统一所有的静态资源路径,否则就容易出现 404 错误。

此外 Tomcat 可以在 server.xml 中配置 docBase 将所有的静态资源统一放在 web 工程目录之外。

<Context docBase="D:\WoodWang\JavaSoft\nginx-1.12.0\html" path="/" reloadable="true" />

加上这行配置之后,直接访问 http://localhost:8080/websocketDemo/index.jsp 也不会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值