之前简单了解了一下nginx的反向代理与负载均衡。
大家都知道,我们要访问国外的指定网站,通过代理作为中间件,访问目标网站的模式是代理,
而反向代理就是我们访问一个地址,这个地址是用户认为的目标地址,但实际上nginx内部通过这个地址又访问了别的地址(例如内部某ip),用户不知道这个实际的地址。
而软负载均衡,则通过nginx向不同的web应用服务器发出请求,减缓web应用服务器压力。
下面是一个简单的轮询实现。
upstream myServer{
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
#负载均衡访问服务器
server {
listen 80;
server_name test.hry.com;
#charset koi8-r;
#access_log logs/host.access.log main;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
#指向负载均衡配置
proxy_pass http://myServer;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
#1
server {
listen 9000;
server_name a.com;
#charset koi8-r;
#access_log logs/host.access.log main;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://www.sina.com;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
#2
server {
listen 9001;
server_name a.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://www.jd.com;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
#3
server {
listen 9002;
server_name a.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://www.baidu.com;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
同时我们也可做加权轮询,
通过配置 weight=n 来添加权值。