node.js 和 nginx 代理设置——出了点问题,但是什么?

标签 node.js nginx

所以我用了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;
    }
 }

一些线索:

  1. 我知道 Node 正在工作,因为我可以在 127.0.0.1:3000 看到代码
  2. 我知道 nginx.conf 文件设置正确,因为:sudo nginx -t 告诉我是这样,而且我在 nginx.conf 文件中有一个单独的服务器在端口 8080 上正确通过。
  3. 到目前为止,所有错误日志都是空白的或不存在的。
  4. 当我访问 my_url.org 时,我看到托管该站点的远程服务器。不是 127.0.0.1:3000。
  5. 每次更改后我都sudo nginx -s reload
  6. 我试过 listen 80;listen 0.0.0.0:80 都没有成功。
  7. 当我在链接的 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/

相关文章:

node.js - Web 套接字和 Flash 套接字客户端连接到一个 Node.js

node.js - 如何在 laragon 中更新 nodejs 版本?

node.js - AWS > CodeStar > Node.JS - Lambda 模板运行 Node.JS 6.14,如何升级到 8.10?

node.js - 使用 nodeJS 的 sentinal 识别 Redis Master

caching - Nginx proxy_cache缓存502错误

nginx - https代理到localhost后的nginx超时

tomcat - Grails 参数编码

javascript - NodeJS : Reading JSON array from a web request

ssl - 如何通过两个服务器 nginx 传递客户端证书?

python - uWSGI保活