我有一个子域名,想通过 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
:
编辑:启动 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
块内以避免地址绑定冲突。