首先搞清楚使用场景。我是在win11上写go做后端api,在WSL2 的Linux上写前端页面。
我发现在windows 里写go语言没啥问题,我的后端api部署在win11上。但是在win11上写前端经常会遇到莫名其妙的故障,一会npm包下不来一会说包之间的依赖结构出问题等等,各种奇葩状况在Linux下面会少很多。
然后我在win11写的后端api与在WSL2里的前端项目之间有个互联互通的问题。折腾了好一会才解决,并做个记录。
一、 .wslconfig文件设置
[wsl2]
[experimental]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
二、明确各自的ip地址
在windows中查看自身的ip。
ipconfig
重点确认192.168开头的本机ip地址,其他的很多ip都不能用,例如Default Switch这给的ip是172.26.80.1、WSL (Hyper-V firewall)这给的ip是172.30.128.1,都不用管。记录下本机ip:我的是192.168.124.6
在wsl2中查看自己的ip。
ip addr
找到eht0 inet对应的地址,我的是172.30.137.41。
然后做好记录:
win11:192.168.124.6
wsl2:172.30.137.41
三、提供api的服务配置
提供api服务配置里ip地址一定要写0.0.0.0:端口,不能写localhost或127.0.0.1:端口。
四、win11访问wsl2中的api
访问地址应该写172.30.137.41,实际上要根据自身设备上的填。
五、wsl2访问win11中的api
访问地址应该写192.168.124.6,实际上要根据自身设备上的填。