Node.js 应用程序的 Nginx 代理配置问题

Posted

技术标签:

【中文标题】Node.js 应用程序的 Nginx 代理配置问题【英文标题】:Nginx proxy config problems for Node.js app 【发布时间】:2015-03-09 00:20:45 【问题描述】:

我几乎可以肯定这只是我的无知,并希望这很容易解决,但基本上 mydomain.com:3000 提供正确的内容,但 mydomain.com 没有。这是我的 nginx.conf.default 文件的内容:

upstream mydomain 
    server 127.0.0.1:3000;
    keepalive 8;


server 
    listen       0.0.0.0:80;
    server_name  mydomain.com www.mydomain.com;

    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://mydomain/;
        proxy_redirect off;
    

我一直在关注这篇文章,但无法弄清楚我的错误在哪里: http://dailyjs.com/2010/03/15/hosting-nodejs-apps/

(注意:我相信我的 nginx 安装与此不同,因为没有可用的站点文件夹。相反,我正在编辑 nginx.conf.default 文件,因为我在我看到的 localhost 服务器的行上方已经到了。)

基本上,我想要的是能够访问 mydomain.com 来加载内容,而不是 mydomain.com:3000

【问题讨论】:

【参考方案1】:

随着 NginX 的较新安装,有一个名为 vhosts 的子文件夹。虚拟主机配置数据需要放在这个文件夹中。如果您使用 UI 将域添加到 cPanel,它会自动创建一个 vhost 文件。

【讨论】:

【参考方案2】:

这都是发行版和软件包的问题,​​而不是 nginx 版本,I've explained this in a different answer before,主要且唯一重要的文件是 nginx.conf,如果您检查该文件,您将知道哪些文件夹重要,哪些不重要,例如 debian 发行版在他们的配置中添加这一行

include /etc/nginx/sites-enabled/*;

这样自动包含sites-enabled文件夹中的所有文件, Redhat 发行版只使用这一行

include /etc/nginx/conf.d/*.conf;

顺便说一句,它仍然包含在 debian 分布式配置中, 这意味着只考虑/etc/nginx/conf.d内的文件,并且它们必须以.conf结尾

只需检查您的 nginx.conf 并确保您的配置位于包含的文件夹中,至于配置本身,它似乎应该可以正常工作。

【讨论】:

谢谢 - 这实际上是我找出 vhosts 文件夹及其文件的方式,是我需要进行编辑的地方。

以上是关于Node.js 应用程序的 Nginx 代理配置问题的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 反向代理 Serving Node.js app 静态文件

nginx反向代理node.js获取客户端IP

Node.js API 网关和 nginx 作为反向代理

nginx使用反向代理支持node.js服务

Socket.io无法在Node.js前面使用Nginx反向代理

Nginx反向代理配置POST请求的nginx.conf相关配置