如何从 Digital Ocean Load Balancer -> Nginx -> Node 脚本获取真实 IP 地址?

How to get real IP address from Digital Ocean Load Balancer -> Nginx -> Node script?

以前当我只使用 Nginx -> Node 脚本时,我可以使用 Nginx 配置来获取访问者的真实 IP 地址:

   location / {
           proxy_pass http://localhost:8080;
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection 'upgrade';
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header Host $host;
           proxy_cache_bypass $http_upgrade;
   }

但是现在,一切都在 Digital Ocean Load Balancer 之后。结果,节点脚本接收到 Digital Ocean Load Balancer 的 IP 地址。

你们有没有遇到过这种情况,你们是怎么解决的?

干杯。

DigitialOcean 负载均衡器设置 X-Forwarded-For、X-Forwarded-Proto 和 X-Forwarded-Port

你的情况:

       proxy_set_header X-Real-IP $http_x_forwarded_for

我解决了这个问题。

使用 Digital Ocean 负载均衡器,如果您使用 "passthrough" 进行负载均衡器 -> Droplet 设置,它不会传递客户端 IP。

您需要配置负载均衡器(通过 Digital Ocean UI)以使用 "new certificate"(可以是任何证书)。

因此 DO 负载平衡器设置将是 HTTPS/443 -> 新证书 -> HTTPS/443。

我认为这称为在负载平衡器处终止 SSL 连接。