同事在群里发了个链接locahost:8080让我帮忙看服务,我点开一片空白。仔细一看他打错字了,正确写法是localhost,少了个l。别看只差一个字母,这一栏能牵出一堆本地调试连不上的问题。

先确认拼写和端口

localhost是系统保留的主机名,一般解析到127.0.0.1。写成locahost时DNS找不到这个域名,浏览器直接报无法访问。同样容易错的还有把8080敲成808或8800。先盯一眼地址栏,这种错最冤。

拼对了还是打不开

  • 服务没起:端口监听是空的,用netstat -ano查有没有LISTENING。
  • 端口被占:Tomcat、Node、另一个项目同时抢8080,先起的占了,后起的静默失败。
  • 只绑了回环:服务只监听127.0.0.1,同局域网的其他电脑访问不到,要改成0.0.0.0。
  • 服务崩过:进程起十秒后自动退出,看着在跑其实已死,盯一眼控制台。

容器和代理的坑

在Docker里跑的服务,容器内的localhost指容器自己,宿主机访问要用映射的端口或宿主机IP。WSL或虚拟机里跑的服务,localhost指向的是那个子系统,宿主机要用宿主机IP或转发端口访问。Nginx反代后端时,如果后端配成locahost:8080这种拼写错误,会返回502。

HTTPS证书也会拦你

服务配了自签证书,浏览器直接拦下报证书无效,页面像打不开一样。开发环境要么用http,要么把自签证书导入系统信任,别指望点继续访问能一劳永逸,很多接口在这种状态下会被拒绝。

快速定位顺序

照着走:看拼写对不对,看端口是否监听,看防火墙放没放行,看服务绑定地址是不是0.0.0.0,最后看浏览器有没有走代理把本地请求也代理出去了。代理软件常是本地调试连不上的隐形杀手,关掉系统代理再试一次,顺便翻一眼服务日志,第一行往往就写明了监听失败的原因。