如何让 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-Forheader中有客户端的真实IP地址。有没有办法让Nginx识别客户端,不登录就让它进来?

你应该为此使用 NGINX real-IP 模块。

我已经在这里描述了这个模块的使用Whosebug #66692200

基本上你需要做

real_ip_header X-Forwarded-For;
real_ip_recursive off;

您应该检查是否能够将 ELB-IP 设置为唯一允许发送 X-Forwarded-For header 的人。了解更多信息 here