创建web服务器后网站打不开,绝大多数情况不是代码问题,而是域名解析未生效、服务器防火墙拦截、Web服务未启动或端口未监听这四类原因中的一种,按顺序排查即可解决。
网站打不开先分清是哪种场景
排查之前先问自己一个问题:网站打不开,具体是谁打不开?
- 只有你自己打不开,别人能打开问题出在你的本地网络或浏览器缓存。
- 所有人包括你自己都打不开问题出在服务器端。
- 用IP能打开,用域名打不开问题出在域名解析环节。
- 在服务器本机用
localhost能打开,用公网IP打不开问题出在防火墙或安全组。
这四种场景对应完全不同的排查路径,判断错了方向,后面所有操作都白费。
域名解析不到服务器,网站自然打不开
绝大多数新手搭建网站,习惯把域名和服务器绑定在一起理解,实际上域名解析有独立的生效链路,任何一个环节卡住,用户在浏览器里输入域名就找不到你的服务器,页面表现就是”无法访问此网站”或”找不到服务器IP地址”。
手动验证域名解析是否生效,最靠谱的方法是用ping命令看返回的IP地址,在本地电脑打开命令行工具输入:
ping 你的域名
把返回的IP和服务器公网IP对照,一致说明解析已经生效,不一致或者提示”找不到主机”说明解析还没完成。
域名解析生效时间存在不确定性,默认设置的解析记录,在全球范围内完全生效通常需要24至72小时,尽管多数情况下几小时内就能用,但DNS服务器的缓存刷新机制决定了这个时间无法精确控制,如果刚修改过解析记录,先耐心等一等。
还有个容易被忽略的因素:本地电脑的DNS缓存,短时间内反复修改过解析记录,本地会缓存旧结果,导致域名指向老IP,刷新本地缓存的方式是在命令行执行ipconfig /flushdns,然后重新ping验证。
内网访问场景下,域名解析经常出岔子,你在家里搭建网站,把域名解析到公网IP,然后用这个域名在局域网内访问很多路由器不支持NAT回流,请求出去转一圈又回来就被丢弃了,表现就是网站打不开。本地搭建网站手机打不开

的场景里,相当一部分是这个原因。
服务器防火墙和安全组拦截了外部请求
域名解析没问题,IP也能ping通,网站还是打不开下一步看服务器有没有把外部流量放进来的”门禁”,云服务器有两个门禁要过:云平台的安全组和服务器系统自带的防火墙。
云平台安全组规则:登录云服务商控制台找”安全组”或”防火墙”入口,检查入方向规则中是否放行了TCP 80端口(HTTP)、TCP 443端口(HTTPS),或者你Web服务实际使用的自定义端口,安全组规则修改后即时生效,不需要重启服务器,很多云服务器默认只放行22和3389端口,80端口是关着的网站服务自然进不来。
服务器系统防火墙:Linux服务器用以下命令查看80端口是否放行:
firewall-cmd --list-ports
iptables -L -n
如果80端口不在放行列表中,执行放行操作,Windows服务器则检查高级安全Windows Defender防火墙中的入站规则。宝塔面板网站打不开在排查时,要到面板的安全页面里看是否放行了对应端口。
系统防火墙还有一个细节值得关注:云平台安全组和系统防火墙是串联关系,两者必须都放行才能通,只开安全组不放系统防火墙,或者反过来,效果都是不通。
Web服务进程没启动,端口自然没人监听
门禁都开了,还是打不开,接着看Web服务软件(Nginx、Apache、IIS)有没有真正运行起来,服务没启动,端口上就没有进程监听,外部请求到了服务器直接被拒绝。
Linux服务器执行以下命令确认服务状态:
systemctl status nginx
systemctl status httpd
反馈显示active (running)说明正常,显示failed或inactive (dead)说明服务挂掉了,启动服务并设置开机自启:
systemctl start nginx
systemctl enable nginx
执行完再确认一下端口监听情况:
netstat -tlnp | grep 80
看到LISTEN状态且对应进程是nginx或httpd,说明端口已经在监听了。
Windows服务器打开IIS管理器,检查对应网站的状态是否为”已启动”,如果启动时报错”端口被占用”,说明80端口被其他程序抢占了,用

netstat -ano | findstr :80查看是哪个进程占用的端口,找到PID后到任务管理器里终结对应进程,或者修改Web服务的监听端口。
Web服务日常运行中会因配置文件语法错误、系统资源耗尽或异常退出等原因挂掉,重启后问题通常能解决,但需留意日志中的具体报错。
配置了自定义端口,URL却少了端口号
这个坑非常隐蔽:网站配置监听的是8080、3000这类非标准端口,但用户访问时只输入了域名,浏览器默认走80端口,连接自然失败。
场景还原:你用Node.js开发了一个应用,监听端口3000,启动后服务器本机访问localhost:3000一切正常,让别人访问你的网站时只给了域名,对方浏览器尝试连接你的80端口那里根本没有服务在监听,网站打不开,这是因为你现在是用来做API服务还是Web站点,确认之后把URL中的端口号补齐:
http://你的域名:3000
如果不想让用户手动输入端口号,考虑两个方向:一是把Web服务监听端口改为80;二是用Nginx做反向代理,把80端口流量转发到你的应用端口,这样用户访问默认端口即可。
云服务器安全组和系统防火墙同样需要放行3000这个自定义端口,此前已说明,不再赘述。
本机能访问,外网打不开网站的排查顺序
这个场景在真实项目中反复出现,值得单独梳理一条完整的排查路径。本机用localhost或0.0.1访问网站一切正常,换成公网IP从外部访问就失败,按以下步骤逐一检查:
- 确认服务器公网IP是正确的,很多服务器有内网IP和公网IP两个地址,用内网IP访问当然打不开。
- 确认Web服务监听的网络接口,监听
0.0.1:80只接受本机回环请求,需要改为监听0.0.0:80才能接受所有网卡接口的请求。 - 检查云平台安全组入方向规则,未放行对应端口会导致外部网络不可达。
- 检查系统防火墙状态,Linux服务器执行
systemctl status firewalld查看,避免防火墙拦截外部流量。 - 物理机搭建网站的场景,确认路由器做了端口映射,将公网端口映射到内网服务器的IP和端口上,未做映射的情况下,外部请求无法到达内网服务器。
- 用本机命令行
telnet 公网IP 80测试端口连通性,连接失败说明上述某个环节仍有问题。

以下用表格梳理几种网站打不开的典型表现对应原因:
| 表现 | 最可能原因 | 验证方式 |
|---|---|---|
| ping域名找不到主机 | DNS解析未生效或记录错误 | 到第三方DNS查询工具看解析状态 |
| ping域名返回IP不对 | DNS缓存或解析记录有误 | ipconfig /flushdns清理缓存 |
| ping通IP但网页打不开 | 端口未放行或服务未启动 | telnet IP 80看端口通不通 |
| 手机能打开电脑打不开 | 本地DNS缓存或hosts异常 | 换网络或清缓存测试 |
| 外网打不开本机能打开 | 安全组/防火墙/端口映射问题 | 按上文6步顺序排查 |
Q&A:网站打不开常见疑问
为什么域名已经解析了,网站还是打不开?
域名解析生效不等于网站就能访问,解析只是第一步,后续还得确认Web服务在正常运行、监听端口正确、安全组和防火墙放行了对应端口,这四步是串联关系,任何一步没完成,网站都无法访问。
网站打不开怎么解决最快?
按下面的顺序排查最快:先看服务器本机访问localhost正不正常,确认服务在运行;再检查云平台安全组和系统防火墙有没有放行端口;最后用ping和telnet验证域名解析和端口连通性,多数情况下问题出在防火墙规则或安全组配置上。
本地搭建网站手机打不开是什么原因?
手机和电脑在同一局域网时,手机访问需要填写电脑的内网IP加端口号,例如168.1.100:8080,确认电脑防火墙放行了对应端口,另外Windows系统默认工作网络类型为公用网络时自带严格过滤规则,需要手动设置入站允许规则。
网站打不开的排查本质上是链路检查:从域名解析到端口放行,再到服务监听,每一步都有对应的验证命令,按顺序执行,问题定位通常不超过十分钟。
