在 nginx 中的 proxy_pass 字段中指定你的实际内部 IP 是否正确?

在 nginx 中的 proxy_pass 字段中指定你的实际内部 IP 是否正确?

我现在要通过 nginx 在 Google Compute Engine 上部署我的 node.js 应用程序,但是在完成所有配置后,我遇到了“502 Bad Gateway”错误。

然后,经过几个小时的挖掘,我终于发现proxy_pass中的字段/etc/nginx/sites-available/server.conf应该是 GCE 控制台中显示的实际内部 IP 地址,而不是http://127.0.0.1。conf 文件如下(一些值仅用于说明目的):

server {
    listen 80;
    listen 443 ssl;
    server_name example.com;
    ssl_certificate        /etc/nginx/ssl/example.crt;
    ssl_certificate_key    /etc/nginx/ssl/example.key;

    location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://10.102.24.152:8888;
    }
}

但是,我所遵循的所有教程都将值设置为proxy_passhttp://127.0.0.1但在我的例子中,它根本不起作用。教程的示例如下:

所以我现在想知道这是否是使服务器正常运行的正确方法。或者这是否会导致某些容易出现安全漏洞的情况?或者也许这127.0.0.1是正确的数字,而我这边存在其他问题?

答案1

是的,输入实例 IP 地址是合理的做法。

您应该注意不要使用公共 IP,因为您可能会被收取带宽费用。我不熟悉 GCE,但在 AWS 中,您有一个可在互联网上路由的外部 IP 和一个网络内的内部 IP。AWS 和 GCE 之间可能存在差异,有人可能会纠正我。

相关内容