nginx实现反向代理和负载均衡
实现反向代理,为具体形象,这里举个实例。即我们要实现的效果是,通过浏览器访问http://www.88.com/,进入tomact首页。
为实现以上效果,首先需要在本地的host文件修改配置,文件路径在:C:\Windows\System32\drivers\etc
修改内容为:
127.0.0.1 www.88.com
然后启动本地的tomact,访问路径就可以为:http://www.88.com:8080/
可以看到本地的虚拟域名生效了。
最后在nginx的配置文件中修改配置,增加一个server块,达到反向代理的效果。
server {
listen 80;
server_name www.88.com;
location / {
root html;
# Nginx反向代理配置即真实ip+端口
proxy_pass http://127.0.0.1:8080;
index home.html index.htm;
}
}
然后再访问,端口号就由8080改为80了。
这里我们只改变的端口号,但是一样可以确定达到了反向代理的效果。
配置负载均衡:默认轮询。
http {
#负载均衡配置,即真实访问ip+端口
upstream myapp {
server localhost:8080 weight=3;
server localhost:8081 weight=1;
}
server {
listen 80;
server_name www.88.com;
location / {
root html;
#反向代理即真实ip+端口,这里引用负载均衡配置
proxy_pass http://myapp;
index home.html index.htm;
}
}
}
负载均衡策略:
轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
权重(weight):weight代表权重,默认为1,权重越高被分配的客户端几率越大。
upstream myapp {
server localhost:8080 weight=3;
server localhost:8081 weight=1;
}
ip_hash:每个请求按访问的ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决 session的问题。例如:
upstream myapp {
ip_hash;
server localhost:8080 weight=3;
server localhost:8081 weight=1;
}
fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream myapp {
server localhost:8080 weight=3;
server localhost:8081 weight=1;
fair
}