MacOS High Sierra下Nginx配置失效、域名解析及端口占用问题求助
咱们一步一步来搞定这两个核心问题:端口占用导致Nginx启动失败,以及mage.local域名解析失败。
一、先解决Nginx端口占用问题
你看到的bind() to 0.0.0.0:80 failed (48: Address already in use)错误,说明80端口已经被其他进程抢占了——最常见的情况是Mac自带的Apache服务在运行,或者之前的Nginx进程没正常退出。
定位占用80端口的进程
打开终端执行以下命令:sudo lsof -i :80输出结果里会显示占用端口的进程名(比如
httpd就是Apache)和对应的PID(一串数字)。终止占用端口的进程
如果是Apache服务,直接用专用命令停止:sudo apachectl stop如果是其他进程,用查到的PID强制终止:
sudo kill -9 <你的PID数字>验证Nginx配置并重启
先检查配置文件有没有语法错误:sudo nginx -t如果输出
test is successful,就重启Nginx:sudo nginx -s reload要是之前Nginx没启动成功,直接执行
sudo nginx启动服务。
二、解决mage.local域名解析失败问题
这里有个极易忽略的拼写错误,还有几个配置细节需要确认:
修正dnsmasq配置文件名
你提到的配置文件是/usr/local/etc/dsnmasq.conf,但正确的文件名应该是**dnsmasq.conf**(少了一个字母n)!这个拼写错误会导致dnsmasq完全加载不到你的域名解析规则。重启dnsmasq服务
如果你是用Homebrew安装的dnsmasq,执行以下命令重启服务:sudo brew services restart dnsmasq刷新本地DNS缓存
Mac系统刷新DNS缓存的命令:sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder验证域名解析是否正常
执行以下命令,检查返回的IP是否为127.0.0.1:nslookup mage.local如果输出的Address字段显示
127.0.0.1,说明解析规则已经生效。
三、最后验证访问
现在再执行curl -IL http://mage.local,应该能得到正常的HTTP响应了。如果还是存在问题,可以排查:
- 确认
/Users/nghiepthan/Sites/html/目录确实存在,且里面有test.php或index.html文件 - 查看Nginx的错误日志(
/Users/nghiepthan/Sites/html/nginx.error.log),根据具体错误信息进一步排查
内容的提问来源于stack exchange,提问作者thanhoangxuannghiep

