Nginx 子域名未路由到 Node.js

Nginx 子域名未路由到 Node.js

我有一个子域名,想通过 Nginx 代理到 Node.js。

domain.tld目前是通过的标准方式/opt/nginx/conf/nginx.conf

不过,我还想subdomain.domain.tld路由到domain.tld:8000

为此,我输入了以下内容/etc/nginx/sites-available/subdomain.domain.tld.conf

http{
    server {
            listen 0.0.0.0:80;
            server_name subdomain.tld.com;
            access_log /var/log/nginx/subdomain.domain.log;

            location / {
                    proxy_pass http://127.0.0.1:8000;
            }
    }
}

Nginx 似乎启动正常。子域名的名称服务器配置正确。

我做错了什么?非常感谢您的帮助。

编辑:此外,我将文件从sites-available/符号链接到sites-enabled/

编辑:确切内容 /opt/nginx/conf/nginx.conf

http://pastebin.com/wZJFPx7H

编辑:启动 nginx 的错误信息:

 Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 
 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 
 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 
 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 
 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 
 nginx: [emerg] still could not bind()

答案1

首先,检查启动期间日志中是否有任何错误。

由于以下原因,可能无法加载此服务器:

proxy_pass 127.0.0.1:8000;

应改为:

proxy_pass http://127.0.0.1:8000;

除此之外,请将该listen指令与其他server块中的指令进行比较 - 确保它们匹配。如果它们绑定到特定地址而不是 0.0.0.0,那么这server将无法获取请求。

编辑

对于将来发现此问题的人来说,子域的server块未包含在内 - 并且该include块必须在现有http块内以避免地址绑定冲突。

相关内容