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;
}