nginx--之负载均衡
nginx--之负载均衡
以天天鲜配为例
upstream admin {
server 10.20.4.7:8080;
server 10.20.4.7:8080;
}
server {
listen 80;
server_name www.ttxianpei.net;
allow 111.204.156.166; #配置了外网访问限制,只允许公司出口IP访问,其他拒绝
allow 122.14.40.34;
allow 1.119.149.130;
deny all;
access_log /data/logs/nginx/ttxianpei_access.log;
error_log /data/logs/nginx/ttxianpei_error.log;
location / {
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://admin; #反向代理
}
}
想要分享如下几点
做了外网访问限制;
使用了proxy_pass 反向代理
upstream 模块实现了负载均衡
proxy_set_header Host $host; #请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名
proxy_set_header X-Real-Ip $remote_addr; #用户的真实ip就被放在X-real-ip这个变量里了
proxy_set_header X-Forwarded-For $remote_addr; #默认的X-Forwarded-For值是空的,用户的真实ip就被放在X-Forwarded-For这个变量里了
参考链接:https://blog.csdn.net/bao19901210/article/details/52537279
获取源IP (做了一个测试,加了下面两行配置后,以上的proxy_set_header不配置也可以获取到客户端真实IP)
real_ip_header X-Forwarded-For: 告知Nginx真实客户端IP从哪个请求头获取,如X-Forwarded-For;
set_real_ip_from 192.168.0.0/16:告知Nginx哪些是反向代理IP,即排除后剩下的就是真实客户端IP,支持配置具体IP地址、CIDR地址;
参考链接:https://blog.csdn.net/broadview2006/article/details/54570943
关于外网访问限制,曾遇到过一个案例,作下分享。
admin.ttxianpei.cn 加外网访问限制后,公司出口IP访问也报403……
解决办法:
set_real_ip_from 10.0.0.0/8; #告知Nginx哪些是反向代理IP,即排除后剩下的就是真实客户端IP,
real_ip_header X-Forwarded-For; #告知Nginx真实客户端IP从哪个请求头获取,如X-Forwarded-For;