Mac下/etc/hosts无法将域名指向本地IIS应用问题求助
嘿,我懂你在Windows下的操作逻辑,但Mac的网络机制确实有几个容易踩坑的点,咱们一步步排查:
1. 先确认Hosts文件的修改真的生效了
Mac的Hosts文件存放在/etc/hosts,修改它必须用管理员权限——这是和Windows不一样的地方!你是不是直接编辑没加sudo?正确的编辑方式应该是打开终端,输入:
sudo nano /etc/hosts
修改完按Ctrl+O保存,Ctrl+X退出。如果没加sudo,你的修改大概率根本没保存成功。
验证一下:终端输入ping auth.site.com,如果返回的IP是127.0.0.1,说明Hosts配置没问题;如果不是,重新用sudo编辑保存一次。
2. 刷新Mac的DNS缓存
Windows用ipconfig /flushdns,Mac的命令分系统版本:
- macOS 10.12及以上:
sudo killall -HUP mDNSResponder
- 10.11及更早版本:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
刷新完缓存,再试试访问域名。
3. 清理Chrome自己的缓存和安全策略
Chrome有独立的DNS缓存,哪怕系统缓存清了,它可能还抱着旧记录不放:
- 打开Chrome,输入
chrome://net-internals/#dns,点击Clear host cache一键清除。 - 另外,要是你之前访问过这个域名的HTTPS版本,Chrome可能触发了HSTS强制跳转HTTPS,导致无法访问HTTP的本地服务。解决方法:输入
chrome://net-internals/#hsts,在Delete domain security policies里填auth.site.com,点击Delete,然后重启Chrome。
4. 检查本地项目的监听设置
Visual Studio for Mac里的IIS项目,会不会只绑定了localhost而不是0.0.0.0?如果项目只监听localhost,理论上127.0.0.1也能访问,但有时候系统解析hosts后可能有差异?保险起见,把项目的监听地址改成0.0.0.0:44380,这样所有本地IP都能访问。
另外确认端口没被占用:终端输入lsof -i :44380,能看到你的IIS项目进程就没问题;要是显示其他程序,要么换端口要么关掉占用的程序。
5. 别忘了加端口号!
这是最容易忽略的点:你本地项目跑在44380端口,Hosts只是把域名指向127.0.0.1,但不会自动映射端口!所以你得输入http://auth.site.com:44380才能访问,除非你把项目改成用默认的80端口(这样访问时不用加端口)。Windows下如果用80端口习惯了,到Mac很容易忘这一步!
6. 检查Mac防火墙设置
Mac的防火墙可能挡住了44380端口的访问:打开系统偏好设置→安全性与隐私→防火墙→防火墙选项,看看有没有阻止Visual Studio for Mac或者IIS相关进程。有的话添加允许,或者临时关掉防火墙测试一下。
内容的提问来源于stack exchange,提问作者Web Develop Wolf

