Nginx反向代理和负载均衡的配置

1、反向代理配置

反向代理也称“动静分离”,nginx不自己处理图片的相关请求,而是把图片的请求转发给其他服务器来处理.

修改nginx部署目录下conf子目录的nginx.conf文件:

加到server{}中

location ~ \.(jpg|jpeg|png|gif)$ {
        proxy_pass HTTP://IP:port;
}

反向代理导致了后端服务器接到的客户端IP,为前端服务器的IP,而不是客户真正的IP,怎么办?

答: 代理服务器通过设置头信息字段,把用户IP传到后台服务器去.

location ~ \.(jpg|jpeg|png|gif)$ {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass IP:port;
}

这样图片资源即可从另外一台服务器获取

 

2、反向代理+负载均衡

nginx 的 upstream默认是以轮询的方式实现负载均衡,这种方式中,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

1:配置upstream

upstream imageserver {
    server 192.168.1.204:8080 weight=1 max_fails=2 fail_timeout=30s;
    server 192.168.1.204:8081 weight=1 max_fails=2 fail_timeout=30s;
}

weight:权重,如果两台服务器都是1则是1:1分配,一个1一个2则是1:2分配

max_fails :允许请求失败的次数默认为2.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 

fail_timeout:max_fails次失败后,暂停的时间

2: 下游调用

location ~ \.(jpg|jpeg|png|gif)$ {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://imageserver;
}

Upstream命名和服务器地址根据实际情况修改。

另外一种方式是ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 

upstream imageserver {
    iphash
    server 192.168.1.204:8080  max_fails=2 fail_timeout=30s;
    server 192.168.1.204:8081  max_fails=2 fail_timeout=30s;
}

 

posted @ 2017-08-20 15:16  郁冬  阅读(263)  评论(0编辑  收藏  举报