WSL2可访问localhost但无法访问127.0.0.1,需开放指定端口
WSL2下localhost可访问Apache但127.0.0.1无法访问的解决方法
在WSL2环境中,通过localhost可以正常连接Apache服务,但完全无法访问127.0.0.1。需要访问35729(livereload)和MySQL端口,已尝试多种解决方法且Windows防火墙已关闭。以下为ifconfig命令输出结果:
ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.24.244.88 netmask 255.255.240.0 broadcast 172.24.255.255 inet6 fe80::215:5dff:fed5:759c prefixlen 64 scopeid 0x20<link> ether 00:15:5d:d5:75:9c txqueuelen 1000 (Ethernet) RX packets 2860 bytes 253955 (253.9 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 12 bytes 936 (936.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 47 bytes 32100 (32.1 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 47 bytes 32100 (32.1 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
解决思路
1. 检查服务绑定地址
- 确认Apache、livereload、MySQL服务是否绑定
0.0.0.0而非仅localhost或特定IP:- Apache:查看配置文件(如
/etc/apache2/sites-available/000-default.conf),确保Listen指令为Listen 0.0.0.0:80。 - MySQL:修改
my.cnf(或mysqld.cnf)中的bind-address为0.0.0.0,重启服务。 - Livereload:在工具配置中设置
host: '0.0.0.0',确保监听所有地址。
- Apache:查看配置文件(如
2. 直接使用WSL2虚拟机IP访问
- WSL2的独立虚拟机IP为
ifconfig中eth0的inet值(此处为172.24.244.88),可直接用该IP访问服务:- Apache:
http://172.24.244.88 - Livereload:
http://172.24.244.88:35729 - MySQL:用
172.24.244.88作为主机地址,默认端口3306。
- Apache:
3. 配置Windows到WSL2的端口转发
- 以管理员身份打开PowerShell,执行以下命令(替换
<WSL_IP>为你的WSL2 IP):
WSL2重启后IP可能变化,需重新执行或编写自动更新脚本。netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=<WSL_IP> netsh interface portproxy add v4tov4 listenport=35729 listenaddress=0.0.0.0 connectport=35729 connectaddress=<WSL_IP> netsh interface portproxy add v4tov4 listenport=3306 listenaddress=0.0.0.0 connectport=3306 connectaddress=<WSL_IP>
4. 检查WSL2本地hosts文件
- 查看
/etc/hosts文件,确认localhost映射正确:
确保存在行:cat /etc/hosts127.0.0.1 localhost,缺失则添加后保存。
5. 重启WSL2服务
- 在PowerShell中执行命令重启WSL2,修复网络异常:
重新打开WSL终端,启动服务后再测试。wsl --shutdown
内容的提问来源于stack exchange,提问作者Max.A
相关产品推荐
相关产品推荐

