在 Mac 上启动 nginx 失败,错误代码为 48:地址已在使用中

在 Mac 上启动 nginx 失败,错误代码为 48:地址已在使用中

我正在尝试使用以下命令在 Mac OS X 上启动 nginxsudo nginx

失败并出现以下错误

nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] still could not bind()

我尝试使用以下方法停止 Apache 服务sudo apachectl stop

这会引发以下错误

launchctl: Error unloading: org.apache.httpd

根据这个答案这很可能意味着 Apache 尚未运行

然后我尝试使用以下代码找出 80 端口上运行的程序sudo lsof -i:80

这输出到这个

Google    441 jaskaran   68u  IPv4 0xa3f4d891ed1a8373      0t0  TCP 192.168.1.45:50993->www.google:http (ESTABLISHED)
Google    441 jaskaran  143u  IPv4 0xa3f4d891ed054b5b      0t0  TCP 192.168.1.45:51017->www.scorecardresearch.com:http (ESTABLISHED)
Google    441 jaskaran  150u  IPv4 0xa3f4d891eb9a1b5b      0t0  TCP 192.168.1.45:51018->www.scorecardresearch.com:http (ESTABLISHED)
Google    441 jaskaran  152u  IPv4 0xa3f4d891ed1a4373      0t0  TCP 192.168.1.45:51019->www.scorecardresearch.com:http (ESTABLISHED)
Google    441 jaskaran  156u  IPv4 0xa3f4d891ed071b5b      0t0  TCP 192.168.1.45:51020->www.scorecardresearch.com:http (ESTABLISHED)

该命令的输出随着时间不断变化。

我如何让 nginx 工作?

答案1

在尝试启动之前nginx,请检查端口“8080”上是否已在运行,如下所示。我说端口“8080”,因为这是您发布的错误消息中显示的端口号:

$ sudo netstat -nlp | grep ':8080' tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2355/nginx
tcp6 0 0 :::8080 :::* LISTEN 2355/nginx

在我的例子中,它显示了一个名为“nginx”的进程,其进程 ID 为 2355,在端口 8080 上运行。

您可以尝试kill -TERM 2355向相关进程 ID 发出 以停止(假设您不想让它运行),然后使用 确认netstat,如上所示。将“2355”更改为与您自己的进程 ID 匹配。

您可以仍然即使在尝试启动之前确认该部分没有运行任何内容,也会收到错误。nginx在这种情况下,您的 Nginx 可能有与该端口相关的冲突条目。在您的 Nginx 配置中搜索8080。如果有多个提及,请查看相关配置的文档以确认您没有使用它太多次。

相关内容