1、反向代理的定义:
反向代理服务器决定哪台服务器提供服务。
比如:一个在公网上的ip地址,上面安装了多个tomcat服务器,每个服务器都把自己的域名和这个ip地址绑定, 此时从公网来了一个(或多个)访问这个ip地址的请求,都是先经过这个反向代理服务器,再由这个服务器把这些请求, 分发到各自系统的tomcat服务器中。当各自的tomcat服务器把请求处理完,把结果再次返回到反向代理服务器, 再由反向代理服务器返回到internet中,这叫反向代理。
2.nginx实现反向代理:
a)、在服务器电脑上安装两个tomcat服务器,端口分别是8080、8081
b)、在nginx的nginx.conf文件中添加两个server节点,配置俩个虚拟主机
upstream sina{
server 192.168.25.130:8080; --当分发请求到sina时,就是访问 192.168.25.130:8080
}
server {
listen 80; --虚拟主机都监听80端口
server_name www.sina.com.cn; --这个监听的是www.sina.com.cn域名
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://sina; --配置这个,当访问www.sina.com.cn时,在通过反向代理,分发请求到 http://sina 中,
index index.html index.htm;
}
}
upstream sohu{
server 192.168.25.130:8081;
}
server {
listen 80;
server_name www.souhu.com; --这个监听的是www.souhu.com域名
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://sohu; --注解同上
index index.html index.htm;
}
}
c)、在本机的hosts文件中分别配置 www.sina.com.cn、www.souhu.com都绑定服务器的ip,
再访问这两个域名,就能访问服务器上对应的8080、8081的tomcat服务器
d)、流程说明:当本机访问域名 www.sina.com.cn时,会先把请求发送到nginx服务器,然后nginx根据这个域名,
找到proxy_pass属性对应的http://sina,然后通过upstream sina,将请求转发到192.168.25.130:8080
192.168.25.130:8080接收到请求后,将响应先返回到nginx,nginx再把结果返回到用户
3.nginx负载均衡:
a).定义:如果一个网站的访问量很大,可以使用多个tomcat来部署这个网站,此时可以使用nginx的负载均衡的功能,
把访问这个网站的请求分配到不同的tomcat中
b).实现:
1.在服务器再复制一个tomcat,端口为8082
2.在nginx.conf文件中的一个server节点的upstream中,增加一个server节点
upstream sina{
server 192.168.25.130:8080; --这里配置两个server,则访问www.sina.com.cn的请求会轮训进入这两个tomcat
server 192.168.25.130:8082 weight=2; --weight默认值是1,weight越大,就进入这个tomcat的次数就越多
}
server {
listen 80; --虚拟主机都监听80端口
server_name www.sina.com.cn; --这个监听的是www.sina.com.cn域名
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://sina; --配置这个,当访问www.sina.com.cn时,在通过反向代理,分发请求到 http://sina 中,
index index.html index.htm;
}
}
3.本机访问www.sina.com.cn,会分别进入192.168.25.130:8080和192.168.25.130:8082,不配置weight则是一个一次轮询