别再傻傻分不清!localhost、127.0.0.1、本机IP,原来大有讲究!
调试接口死活连不上?
部署服务队友访问不了?
八成是localhost、127.0.0.1、本机IP用混了!
这三个看似都指向“自己”的东西,差之毫厘谬以千里。
搞不清它们,轻则调试抓狂,重则服务裸奔。
localhost就是个域名,系统hosts文件里写死了指向127.0.0.1。
敲浏览器里看着方便,本质还得转成IP。
有些新系统会同时指向IPv6的::1,要是环境没配好,访问速度可能比127.0.0.1还慢一丢丢。
127.0.0.1是真·回环地址。
你访问它,数据压根不走网卡,纯内存里兜一圈。
绑这个地址的服务,外面设备绝对摸不着。
最适合测试用,比如刚搭个MySQL,本地连127.0.0.1:3306测通再谈别的。
本机IP才是硬通货。
192.168.x.x、10.x.x.x这种,是路由器或网管分给你的真实“门牌号”。
想让你手机访问电脑跑的网页?
必须用这个地址。
但坑也多:动态IP可能变,公司网段切换要重配,最要命的是——绑0.0.0.0监听所有网卡?
等于把服务大门敞开,去年就有某企业内网Redis这么裸奔被挖矿了。
重点来了:安全第一!
本地测试服务强烈建议绑127.0.0.1。
真需要局域网访问,也得精准绑定192.168.x.x这种具体地址,千万别图省事用0.0.0.0。
Docker里更坑:容器内访问localhost只是容器自己,想连宿主机?
Linux得找docker0网桥IP,Windows/Mac用host.docker.internal这个特殊域名。
实测过,ping localhost延迟基本0ms,走物理网卡的本机IP反而有0.1-0.3ms波动。
压测本地API,127.0.0.1比192.168地址QPS能高15%。
不过现在新机器都双栈支持,处理不好IPv6解析反而拖慢速度。
说白了:localhost是快捷方式,127.0.0.1是内存通道,本机IP才是联网身份证。
用错地方?
轻则调试火葬场,重则安全翻车。
下次写代码前先想想:这服务到底要给谁用?