为两个节点应用程序配置nginx,其中一个在子域上

时间:2016-07-21 03:07:32

标签: node.js express nginx digital-ocean

问题

我正在尝试设置nginx,以便我可以让我的域domain.com由端口3000上的节点Web应用运行,子域dev.domain.com由第二个节点Web应用运行在端口3001.当我运行此配置时,domain.com已连接到正确的端口,但dev.domain.com只是提供了一个页面,表明服务器无法访问。

修改 如果我转到IP_ADDRESS:3000,我会收到与domain.com相同的内容,但如果我转到IP_ADDRESS:3001,我会得到dev.domain.com的内容。基于此,似乎应用程序在正确的端口上正常运行,我只是没有正确路由子域。

代码

我直接编辑了/etc/nginx/sites-available/default,所以它有:

server {
    listen 80 default_server;
    server_name domain domain.com www.domain.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}
server {
    listen 80;
    server_name dev.domain dev.domain.com www.dev.domain.com;
    location / {
        proxy_pass http://127.0.0.1:3001;
    }
}

除了该文件外,其他所有内容都是全新安装

我的逻辑

我对nginx很新,但似乎domain.com的所有请求都会发送到端口3000,dev.domain.com的请求会转到3001。

对我迄今所做的任何帮助或批评都将不胜感激!

2 个答案:

答案 0 :(得分:3)

以上设置正常。我的问题是DNS记录 - 我添加了一条A记录,指示dev.domain.com到我正在运行节点应用程序的服务器的IP地址。

答案 1 :(得分:1)

面对相同的问题,并通过以root用户创建文件来解决了该问题:

drwxr-xr-x   6 gitlab-runner gitlab-runner  4096 Sep 12 06:56 .
drwxr-xr-x   4 root          root           4096 Sep 12 06:57 ..
-rw-r--r--   1 root          root             11 Sep 12 06:54 .env
-rw-rw-r--   1 gitlab-runner gitlab-runner   599 Sep 12 06:56 app.js

如果要使用gitlab-runner命令从rm -Rf删除此文件夹中的所有文件和目录,它将删除.env以外的所有文件

这只是快速解决方法,可能会有用。