Nginx的反向代理(负载)
这里写目录标题
配置Tomcat集群
1、将配置好的Tomcat文件夹复制一分,名为tomcat-7_1
[aaa@qq.com local]# cp -r apache-tomcat-7.0.104/ tomcat-7_1
2、修改配置文件(tomcat-7_1)
修改conf目录下的server.xml文件
①将关闭Tomcat的监听端口“8005”更改为“9005”
<Server port="9005" shutdown="SHUTDOWN">
②将HTTP的端口“8080”更改为“8090”
<Connector port="8090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
③将AJP/1.3的端口号“8009”更改为“9009”
<Connector protocol="AJP/1.3"
address="::1"
port="9009"
redirectPort="8443" />
保存并退出
3、回到bin目录下启动服务
[aaa@qq.com bin]# ./startup.sh
网页查看:192.168.100.11:8090
反向代理
反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
关于反向代理的处理方式,举例如我大天朝的某宝网站,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了,此时就出现了一个大家耳熟能详的名词:分布式部署;也就是通过部署多台服务器来解决访问人数限制的问题;某宝网站中大部分功能也是直接使用nginx进行反向代理实现的,并且通过封装nginx和其他的组件之后起了个高大上的名字:Tengine,有兴趣的童鞋可以访问Tengine的官网查看具体的信息:http://tengine.taobao.org/
理解这两种代理的关键在于代理服务器所代理的对象是什么,正向代理代理的是客户端,我们需要在客户端进行一些代理的设置。而反向代理代理的是服务器,作为客户端的我们是无法感知到服务器的真实存在的。
总结起来还是一句话:正向代理代理客户端,反向代理代理服务器。
反向代理有哪些主要应用?
现在许多大型web网站都用到反向代理。除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。
操作
Nginx作为近年来较火的反向代理服务器,安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定哪台目标主机来处理当前请求。下面演示如何进行配置使Nginx发挥作用。
模拟n个http服务器作为目标主机
用作测试,简单的使用2个tomcat实例模拟两台http服务器,分别将tomcat的端口改为8080和8090
1、修改nginx.conf文件
# upstream表示负载服务器池,定义名字为tomcats的服务器池
# 只需要在upstream的server后面添加一个weight即可代表权重。权重越高,分配请求的数量就越多。默认权重是1
# proxy_pass
该指令用于设置被代理服务器的地址。可以是主机名称、IP地址加端口号的形式。
语法结构如下: proxy_pass URL;
URL 为被代理服务器的地址,可以包含传输协议、主机名称或IP地址加端口号,URI等。
proxy_pass http://www.123.com/uri;
PS:不要写错IP地址,不然出bug你就是在de一个不存在的bug!!
upstream mytomcat{
server 192.168.100.11:8080 weight=2;
server 192.168.100.11:8090;
}
location / {
root html;
index index.html index.htm;
} 改为
location / {
proxy_pass http://mytomcat;
index index.html index.htm;
}
server_name最好也做一下更改,我更改为master
配置如图所示:
2、在eclipse里创建一个maven web工程
编辑index.jsp形成多个不同的war包(但命名应相同,都为nginx.war)
①nginx.war
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
②nginx.war
<html>
<body>
<h2>I am Sartin!</h2>
</body>
</html>
3、导入war包
将生成的两个war包分别放到 apache-tomcat-7.0.104和 tomcat-7_1这两个Tomcat集群的webapps目录下,一个文件夹一个
4、启动nginx服务并开启Tomcat集群(两个Tomcat都要开启)
[aaa@qq.com ~]# cd /usr/local/apache-tomcat-7.0.104/bin
[aaa@qq.com bin]# ./startup.sh
[aaa@qq.com bin]# cd /usr/local/tomcat-7_1/bin
[aaa@qq.com bin]# ./startup.sh
[aaa@qq.com bin]# cd /usr/local/nginx/sbin
[aaa@qq.com sbin]# ./nginx
5、网页查看:
多次刷新会随机出现以下两个结果