以前的文章有设置ip_hash的方式,设置后,如果动态调用的server的参数
会获取到代理的名字,而不是服务器IP,经实践,加入:
proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr;
这几句代码,就可以获取到IP了,而不是upstream里的名字,完整代码如下:
#先在nginx.conf中定义一组upstream upstream pre-cloud_Backend { server pre-cloud.website.com:8080; ip_hash; check interval=5000 rise=1 fall=3 timeout=30000; check_http_expect_alive http_2xx http_3xx; #tengine的健康检查模块 } #conf.d/下定义一个文件 server{ listen 80; server_name cloud.website.com; limit_conn perserver 10000; location / { proxy_next_upstream error timeout http_503 http_504 http_502; proxy_connect_timeout 500s; proxy_read_timeout 500s; proxy_send_timeout 500s; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://pre-cloud_Backend; } }
参照:https://blog.csdn.net/qq_41049126/article/details/96978519
------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------
转载请注明本文标题和链接:《nginx反向代理获取IP的问题》
发表评论