所以我用了this stackoverflow answer尝试设置我的本地(在 osx 上)nginx 服务器,让我的 node.js 站点成功发布到 127.0.0.1:3000 以显示在我的浏览器中的 my_url.org。它不起作用。
这是我的 nginx 服务器:我已经在 nginx.conf 文件中直接尝试过,也曾在 sites-available 文件夹中创建了一个单独的文件,然后创建了指向 sites-enabled 文件夹的链接(根据上面链接的答案)
upstream app_name {
server 127.0.0.1:3000;
keepalive 8;
}
server {
listen 0.0.0.0:80;
server_name my_url.org my_url;
access_log /usr/local/var/log/nginx/my_url.org.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://app_name/;
proxy_redirect off;
}
}
一些线索:
- 我知道 Node 正在工作,因为我可以在 127.0.0.1:3000 看到代码
- 我知道 nginx.conf 文件设置正确,因为:
sudo nginx -t
告诉我是这样,而且我在 nginx.conf 文件中有一个单独的服务器在端口 8080 上正确通过。 - 到目前为止,所有错误日志都是空白的或不存在的。
- 当我访问 my_url.org 时,我看到托管该站点的远程服务器。不是 127.0.0.1:3000。
- 每次更改后我都
sudo nginx -s reload
。 - 我试过
listen 80;
和listen 0.0.0.0:80
都没有成功。 - 当我在链接的 sites-enabled 文件夹中使用上述代码尝试此操作时,我在 nginx.conf 文件中有
include/usr/local/etc/nginx/sites-enabled/*;
行。配置文件。当我在 nginx.conf 文件中有上述代码时,我注释掉该行。
我假设我错过了一些明显的东西,但我确实错过了。非常感谢任何帮助。
最佳答案
您应该必须在您的主机文件中将 my_url.org
指向 127.0.0.1(对于 linux 和 linux-like 它应该在 /etc/hosts
中)。
否则您的浏览器将不知道重定向到您的本地服务器。
(我在评论中回答,为 future 遇到同样问题的开发人员移至此处。)
关于node.js 和 nginx 代理设置——出了点问题,但是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35121158/