如何让 Nginx HTTP Basic 身份验证在负载均衡器的远端识别允许的客户端 IP?
How to get Nginx HTTP Basic auth to recognise a permitted client's IP on the far side of a load balancer?
我已将 Nginx 配置为要求对我正在处理的网站进行 HTTP 基本身份验证 public。我添加了一个 allow
子句以允许公司总部的 IP 地址无需输入密码即可查看站点。这最初有效,但是在将 Nginx 服务器置于负载均衡器 (AWS ELB) 之后,Nginx 看到的 IP 地址实际上是负载均衡器的 IP 地址,而不是请求 Web 客户端的 IP 地址 - 所以它停止工作。
我在X-Forwarded-For
header中有客户端的真实IP地址。有没有办法让Nginx识别客户端,不登录就让它进来?
你应该为此使用 NGINX real-IP 模块。
我已经在这里描述了这个模块的使用Whosebug #66692200
基本上你需要做
real_ip_header X-Forwarded-For;
real_ip_recursive off;
您应该检查是否能够将 ELB-IP 设置为唯一允许发送 X-Forwarded-For
header 的人。了解更多信息 here
我已将 Nginx 配置为要求对我正在处理的网站进行 HTTP 基本身份验证 public。我添加了一个 allow
子句以允许公司总部的 IP 地址无需输入密码即可查看站点。这最初有效,但是在将 Nginx 服务器置于负载均衡器 (AWS ELB) 之后,Nginx 看到的 IP 地址实际上是负载均衡器的 IP 地址,而不是请求 Web 客户端的 IP 地址 - 所以它停止工作。
我在X-Forwarded-For
header中有客户端的真实IP地址。有没有办法让Nginx识别客户端,不登录就让它进来?
你应该为此使用 NGINX real-IP 模块。
我已经在这里描述了这个模块的使用Whosebug #66692200
基本上你需要做
real_ip_header X-Forwarded-For;
real_ip_recursive off;
您应该检查是否能够将 ELB-IP 设置为唯一允许发送 X-Forwarded-For
header 的人。了解更多信息 here