正文:
一、环境需求:
Linux
Nginx
二、反向代理
【基本概念】
一个server是一个虚拟主机
每个server代表一个网站
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://119.75.217.109;#百度的ip
}
}
我们访问http://localhost nginx会反向代理到http://119.75.217.109,也就是百度首页,但这时我们看网址栏,显示并不是www.baidu.com 而是localhost.
server{
listen 80;
server_name www.xxx.com;
location / {
proxy_pass http://www.baidu.com;
}
}
此种情况访问http://localhost,我们也会访问到百度首页,但是网址栏显示 http://www.baidu.com,这与上面的例子有所区别。
三、负载均衡
基本概念
HttpProxyModule 代理模块
HttpUpstreamModule 负载均衡模块
upstream 定义一个服务器池
我们先做如下配置:
代理服务器IP 192.1.1.0
后台服务器群,假设有两台
192.1.1.1 #web1
192.1.1.2 #web2
我们在代理服务器中定义一个服务器池,名字叫back,里面有两台服务器,如下:
upstream back{
server 192.1.1.1:80; #web1
server 192.1.1.2:80; #web2
}
server{ #代理服务器192.1.1.0
listen 80;
server_name localhost;
location / {
proxy_pass http://back;
}
}
服务器池中的每台服务器都有相同的配置,即都配置有nginx,root下(html目录下)都已经写好相同网站。
在代理服务器中添加server,如上。
我们使用语句 proxy_pass
加上 http://服务器池名 进行负载均衡的代理。
这样,当用户对localhost进行访问时,
用户A访问返回server 192.1.1.1;
用户B访问返回server 192.1.1.2;
用户C访问返回server 192.1.1.1;
用户D访问返回server 192.1.1.2;
如此循环往复,实现负载均衡的效果。