我现在要通过 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_pass
。http://127.0.0.1
但在我的例子中,它根本不起作用。教程的示例如下:
- https://github.com/ShoppinPal/gcp-scripts/wiki/Setup-Nginx-on-Google-Cloud
- http://support.ghost.org/setup-ssl-self-hosted-ghost/
- https://www.digitalocean.com/community/questions/problem-with-ssl-and-ghost
所以我现在想知道这是否是使服务器正常运行的正确方法。或者这是否会导致某些容易出现安全漏洞的情况?或者也许这127.0.0.1
是正确的数字,而我这边存在其他问题?
答案1
是的,输入实例 IP 地址是合理的做法。
您应该注意不要使用公共 IP,因为您可能会被收取带宽费用。我不熟悉 GCE,但在 AWS 中,您有一个可在互联网上路由的外部 IP 和一个网络内的内部 IP。AWS 和 GCE 之间可能存在差异,有人可能会纠正我。