欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx的反向代理(负载)

程序员文章站 2022-05-26 11:01:58
...

配置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">

Nginx的反向代理(负载)

②将HTTP的端口“8080”更改为“8090”

<Connector port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

Nginx的反向代理(负载)

③将AJP/1.3的端口号“8009”更改为“9009”

<Connector protocol="AJP/1.3"
               address="::1"
               port="9009"
               redirectPort="8443" />

Nginx的反向代理(负载)

保存并退出

3、回到bin目录下启动服务

[aaa@qq.com bin]# ./startup.sh   

Nginx的反向代理(负载)

网页查看:192.168.100.11:8090
Nginx的反向代理(负载)

反向代理

反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器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

配置如图所示:
Nginx的反向代理(负载)

2、在eclipse里创建一个maven web工程

编辑index.jsp形成多个不同的war包(但命名应相同,都为nginx.war)

①nginx.war

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

Nginx的反向代理(负载)

②nginx.war

<html>
<body>
<h2>I am Sartin!</h2>
</body>
</html>

Nginx的反向代理(负载)

3、导入war包

将生成的两个war包分别放到 apache-tomcat-7.0.104和 tomcat-7_1这两个Tomcat集群的webapps目录下,一个文件夹一个
Nginx的反向代理(负载)

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

Nginx的反向代理(负载)

5、网页查看:

http://master/nginx/

多次刷新会随机出现以下两个结果
Nginx的反向代理(负载)
Nginx的反向代理(负载)