给本地IIS项目配置自定义域名访问,核心就两步:先改hosts文件把域名指向本机,再在IIS站点绑定里填上这个域名(主机名)。整个过程不需要真实DNS,也不影响线上网站,纯本地环境搞定,适合开发调试和内网演示。
IIS设置域名访问本地项目的完整流程
一个常见的痛点场景:你本地跑了一个ASP.NET或PHP项目,访问地址是 http://localhost:8080,但客户或同事看这个地址总觉得不专业,而且部分功能在localhost下表现异常,换成 http://myapp.test 这样的自定义域名后,问题就解决了。
为什么要用hosts文件而不是直接改DNS
DNS解析是域名到IP的转换服务,但本机访问有个更高优先级的入口hosts文件,操作系统查域名时,先查hosts文件,再走本地DNS缓存,最后才发请求给DNS服务器,所以只要在hosts里写一行记录,域名就指向本机(127.0.0.1),完全绕开公网DNS,速度毫秒级,这个优先级是操作系统层面的行业共识,所有主流系统都遵守这个顺序。
第一步:修改hosts文件把域名指向本机
hosts文件路径在不同系统里不一样,逐个说清楚。
Windows系统(win10/win11):
- 打开资源管理器,地址栏输入
C:\Windows\System32\drivers\etc回车 - 找到hosts文件,用管理员身份打开记事本(右键记事本图标,选择”以管理员身份运行”)
- 把hosts文件拖进记事本窗口,在文件末尾另起一行,输入:
0.0.1 myapp.test - 保存关闭
macOS或Linux系统路径是 /etc/hosts,同样用root权限编辑,命令为 sudo vi /etc/hosts,注意macOS上很多开发者使用 myapp.local 后缀,但在Windows上 .test 后缀更稳妥,避免与真实域名冲突。
第二步:在IIS里绑定自定义域名
这一部分依赖IIS版本,以下步骤适用于主流IIS版本(8.0以上),在Windows 10/11专业版和Windows Server上操作路径几乎一致。
- 打开IIS管理器(Win+R输入
inetmgr回车) - 在左侧连接面板展开根节点,找到”网站”,点击你要绑定的站点
- 右侧”操作”栏点击”绑定”(英文版是Bindings)
- 弹出的绑定窗口里,点击”添加”(Add)
- 类型选
http,IP地址选全部未分配(All Unassigned),端口填80 - 最关键的一步:主机名(Host name)输入
myapp.test,这是决定域名能否命中的字段 - 确定保存,然后直接在浏览器访问 http://myapp.test
这套操作完成以后,IIS收到请求时会检查HTTP头部的Host字段,只有匹配myapp.test的请求才会进入这个站点,如果没填主机名,所有IP访问的请求都落在该站点上,多个站点共存时就会抢端口。
端口冲突时怎么处理
本地写项目时,socket服务、Apache、Nginx都可能把80端口占了,IIS绑定时端口80如果提示被占用,两个排查方向:
- 用命令
netstat -ano | findstr :80查看是哪个进程占用了端口,确认是Apache或Nginx后,要么停掉对应服务,要么把IIS端口改成8080或8081,但不建议改端口,因为用自定义域名的一大意义就是浏览器地址栏干净,去掉端口号,更像真实线上环境 - 如果是系统服务(PID 4)占用80端口,通常是World Wide Web Publishing服务或SQL Server Reporting Services,这种情况建议在Windows功能里关闭IIS再重新启用,或者直接用IIS的默认站点测试
主站点配置成功后,访问 http://myapp.test 就能看到本地项目了,hosts规则的解析速度快到几乎无感知。
iis绑定多个域名不同站点怎么配
很多开发者同一个IIS实例里跑着十个八个本地项目,每个项目都要独立域名,这个需求可以有两种玩法。
先理解IIS站点的识别机制
IIS匹配请求的优先级顺序是:IP地址 + 端口 + 主机名,三者完全吻合才命中对应站点,所以同一个80端口下想跑多个站点,靠的就是主机名区分,这意味着每个站点绑定时都要填不同的主机名,IP和端口用默认的就行。
实操:多个项目多个域名
比如本地有项目A、项目B、项目C,要分别对应 a.test、b.test、c.test:
| 项目 | 域名 | hosts文件追加内容 | IIS主机名 |
|---|---|---|---|
| 项目A | a.test |
0.0.1 a.test |
a.test |
| 项目B | b.test |
0.0.1 b.test |
b.test |
| 项目C | c.test |
0.0.1 c.test |
c.test |
操作步骤很简单,三个项目各建一个IIS站点,物理路径分别指向项目目录,绑定信息按表格填,之后访问 a.test 只进项目A,b.test只进项目B,互不干扰。
一个站点同时绑定多个域名的情况也有,myapp.test 和 myapp.local 都想指向同一个项目,在绑定窗口里添加两条记录,主机名不同,站点选同一个就行,这里有个小坑备注一下:新增绑定记录时,IP地址不要全填全部未分配,建议都填127.0.0.1,避免多个站点因为IP匹配顺序产生歧义,这在多个站点共用80端口时尤其常见。
本地项目自定义域名hosts设置无效的排查思路
hosts改完了,域名也填在IIS里了,但浏览器就是打不开,页面报”无法访问此网站”,常见原因有四类,按出现频率排个序。
- hosts文件编码或格式问题,记事本另存为时选了UTF-8带BOM,或者UTF-16编码,Windows下都可能解析异常,解决方案是把hosts另存为ANSI编码,行末纯换行,另外检查IP和域名之间用的是空格还是Tab,都行,但至少一个空格
- 浏览器缓存了DNS解析结果,Chrome有独立的DNS缓存,地址栏输入
chrome://net-internals/#dns,点击”Clear host cache”清掉,Firefox和Edge直接在设置里清空缓存即可 - hosts权限没给够,编辑hosts时如果用普通权限保存,系统会提示无权保存,有时候会生成”hosts.txt”这种后缀文件,真正的hosts内容没改到,重新以管理员身份打开编辑器再改一次
- IIS绑定没生效,绑定窗口保存后,普通用户经常忽略IIS需要管理员权限启动,如果你的IIS管理器是标准用户打开的,绑定操作可能写入失败,关掉IIS管理器,右键”以管理员身份运行”后重做绑定
前几年遇到过的情况也值得一提:有的网络环境里有安全软件(比如360或某绒)会把hosts文件的写入操作当成异常行为拦下来,改完一秒文件就被还原了,这种情况需要临时退出安全软件再改,或者把hosts目录加入白名单。
IIS绑定HTTPS证书让域名更接近线上环境
本地自定义域名配好了HTTP访问,但如果项目里有登录、支付这类功能,调试时还需要HTTPS环境,IIS 10及以上版本支持在绑定里直接配HTTPS。
- 使用自签名证书,Windows自带的IIS管理器”服务器证书”功能就能生成
- 创建证书时填写的名称必须和你的域名完全一致,比如域名是
myapp.test,证书通用名也填myapp.test - 生成后在站点绑定窗口添加一条
https类型记录,端口443,主机名填同一个域名,SSL证书选刚才生成的那个 - 浏览器首次访问会提示”不安全”,自签名证书就是这个表现,点”继续前往”即可
注意,自签名证书只适合本地开发,不能用在生产环境,如果想在局域网内其他设备访问,还需要在高级安全Windows防火墙里放行443端口入站规则,否则其他设备连不上。
从本地走向局域网:非本机如何访问
实际工作中,不止自己电脑要访问,同事或手机也要访问这个自定义域名,这里有个误区要讲清楚:hosts文件只对当前计算机生效,同事电脑上访问 myapp.test 依然解析到公网DNS,打不开属于正常现象。
解决方案有两种,按场景选:
- 改对方hosts:在同事电脑的hosts文件里加一行
168.x.x myapp.test(这里的IP是你电脑的局域网IP),同时你自己的IIS绑定里把IP地址从”全部未分配”改成这个局域网IP,并在防火墙里放行80端口,适合1-2台设备临时看效果 - 本地DNS服务器:用树莓派或Windows Server搭一个DNS服务,建一条A记录指向你的开发机IP,局域网内所有设备自动解析,域名完全统一,适合团队多人高频访问
从成本角度说,前者零成本五分钟搞定,后者需要额外的服务器资源和维护精力,但体验更接近真实环境。
常见疑问解答:iis设置域名教程里的高频问题
Q:hosts配置后自定义域名能访问,但localhost却打不开了,怎么回事?
A:大概率是IIS默认站点绑定了80端口且填了全不匹配的主机名,而新站点也绑定在80端口,两者冲突,回到绑定窗口,把默认站点的绑定改成其他端口,比如81,或者给默认站点填一个专属主机名。
Q:IIS绑定域名后,用域名访问时跳到了路由器登录页,怎么解决?
A:这个问题多出在局域网环境,路由器管理页面占用了端口80,操作顺序:先在浏览器里直接访问 http://192.168.x.x 确认是不是路由器页面;如果确认,修改IIS绑定端口为8080,浏览器改用 http://myapp.test:8080 访问,或者在路由器设置里关闭远程Web管理并更改管理端口。
Q:域名解析好之后,IIS站点停止又启动,域名突然访问不了是什么原因?
A:IIS默认站点和自定义站点同时存在时,重启后默认站点可能抢占了IP加端口加主机名匹配的第一优先级,打开IIS管理器,检查所有站点的绑定列表,确保自定义站点的绑定先于默认站点创建,或者在默认站点上点右键选择”管理网站”→”停止”即可恢复。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/635571.html


