Nginx
在 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_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
是正確的數字,我這邊還有其他問題?
是的,放入實例 IP 地址是合理的做法。
您應該注意不要使用公共 IP,因為您可能會收取頻寬費用。我不熟悉 GCE,但在 AWS 中,您有一個可在 Internet 上路由的外部 IP 和一個網路內的內部 IP。AWS 和 GCE 之間可能存在差異,有人可能會糾正我。