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

时间:2018-06-23 18:19:28

标签: node.js nginx digital-ocean

以前,当我仅使用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的IP地址。

您以前有过任何经历,您是如何解决的?

干杯。

2 个答案:

答案 0 :(得分:2)

我解决了这个问题。

对于Digital Ocean负载平衡器,如果将“ passthrough”用于负载平衡器-> Droplet设置,它将不会通过客户端IP。

您需要配置负载平衡器(通过Digital Ocean UI)以使用“新证书”(可以是任何证书)。

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

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

答案 1 :(得分:1)

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

在您的情况下:

       proxy_set_header X-Real-IP $http_x_forwarded_for