Win11下安装一个WSL2,做开发环境,简直是爽到不要不要的,相当于既有Windows下的完善生态,又有linux的便利。特别是,在linux下运行的服务端口号,完全和windows是相通的,直接在windows下浏览访问,不需要配置端口转发。linux上跑docker服务,Windows直接访问。
但今天碰到一个问题,由于在客户现场没有WIFI,只能用手机热点,就算有WIFI,有时WIFI中断,或重新连接时IP也不一样了,所以在Windows上启动的服务注册到注册中心,就变得无法通过注册中心访问了。这就需要指定一下注册IP,使得windows和linux都能在没有WLAN的情况下都能访问。用localhost肯定不行,因为windows和linux的localhost不是同一台机器。尝试了一下,用windows的主机名作为注册地址,在windows下ping 主机名,得到是127.0.0.1, 在Linux下ping 主机名,得到127.0.1.1,windows可以正常访问服务,但linux不行。于是指定使用(WSL (Hyper-V firewall))网关的IP: 172.22.160.1,经测试,windows 和linux 下ping通没问题。于是在配置中心加上:
spring:
cloud:
consul:
discovery:
prefer-ip-address: true
ip-address: 172.22.60.1
重启微服务,测试一下,windows 和linux 下都能正常访问。