通过 https://localhost:8000/ 访问时,本地主机拒绝连接 WSL2,但在使用内部 WSL IP 地址时可以正常工作

Localhost refused to connect on WSL2 when accessed via https://localhost:8000/ but works when using internal WSL IP adress

我想要实现的目标

在开发 Symfony 网络应用程序期间从我的本地计算机访问本地主机。

我的环境
我已采取的步骤
#!/bin/sh
REMOTEIP=`cat /etc/resolv.conf | grep nameserver | sed 's/nameserver\s//'` 
sed -i -E "s/client_host=[0-9\.]+/client_host=$REMOTEIP/g" /etc/php/7.4/mods-available/xdebug.ini
service php7.4-fpm start
service apache2 start
service mysql start  
我期望发生的事情
实际发生了什么
我尝试过的
结论

这种行为很奇怪,因为它有时有效,但有时在执行完全相同的步骤时却无效。我不确定还能在哪里寻找答案,而且我似乎无法在网上找到任何有同样问题的东西。请让我知道是否有任何配置文件等有帮助。非常感谢你的帮助! :)

尝试运行命令netstat -nltp。它显示活动地址和端口。你的 nginx 进程应该是 运行 at 0.0.0.0:8000。 0.0.0.0 表示 nginx 进程在任何地方都可用。

如果您的 nginx 进程是 运行 通过任何特定的 IP 地址,您应该通过该 IP 地址访问它,例如 http://192.168.4.2:8000.

当它正常工作时,如您所知,WSL2 的“本地主机转发”功能意味着您可以使用 Windows 的“本地主机”地址访问 WSL2 内部的服务 运行主机.

但是,有时该功能会出现故障。当您执行以下任一操作时,就会发生这种情况:

  • 休眠
  • 启用Windows“快速启动”功能(这是默认设置)。快速启动是一种伪休眠,它会触发同样的问题。

通常最好的解决方案是禁用休眠和快速启动。但是,如果您确实需要这些功能,可以通过以下方式重置 WSL localhost 功能:

  • 退出任何 WSL 实例
  • 正在发行wsl --shutdown
  • 正在重启您的实例

根据我的经验,localhost 转发之后会起作用。