我在一台 Apache 80 端口上运行。我还安装了 nginx,并且只有一个指定/etc/nginx/sites-enabled
了的conf 文件listen 8888;
。这工作得很好。
现在,我为不同的 vhost 添加了第二个 conf 文件/etc/nginx/sites-enabled
,监听端口 7979。当我运行时sudo service nginx restart
,我得到:
Restarting 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()
nginx.
任何文件中都/etc/nginx
没有提到端口 80!我使用不同端口 (7979) 的唯一原因是,如果两个虚拟主机都有端口 8888,那么其中一个会简单地重定向到另一个,即使它们有不同的server_name
值。
这里发生了什么?
答案1
这样做,我相信你会找到答案
cd /etc/nginx
grep -r 80 *
有时如果你删除默认虚拟主机,然后升级它,它会重新安装并使用端口 80
因此,如果 nginx 没有使用它,请查找正在使用什么
fuser 80/tcp
这将列出使用端口 80 的任何 pid。然后你可以用 grep 查找它
ps aux | grep pid#
答案2
如果您的服务器块没有 listen 指令,Nginx 将默认为 80。