Mac下Nginx端口被占用问题

配置PHP过程中看到nginx的日志文件大小达到800多MB,里面的日志内容多是:nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)等端口占用信息,不免好奇。

Mac默认的Apache已经stop,再无其他应用、程序占用80端口。事实上,netstat分析也显示没有其他进程占用,但结果就摆在眼前,仍在不停输出。通过搜索发现,可能是IPv6所致。于是带上–with-ipv6选项重新编译,并监听ipv6地址,设为ipv6only=on。重新reload后,转为报错:nginx: [emerg] bind() to [::]:80 failed (48: Address already in use)。看来,网上的解决方案无济于事。

逐渐尝试升级Nginx、换端口,问题依旧,只是提示信息改为8080、8081等。看来,问题并不出在ipv6等配置上。

升级过程中,偶然的发现,sudo launchctl unload org.nginx.plist后,似乎报错停止了。于是,恢复配置,reload后,进行了unload测试。果不其然,事实证实如此。问题完美解决。