Windows 上的 Wsl ubuntu 虚拟主机和主机文件

yos*_*ssi 6 ubuntu virtualhost hosts-file windows-subsystem-for-linux

我尝试通过 Windows 浏览器访问它,但失败了。我的错误是什么?

我在 Windows 10 和 ubuntu 20 上使用 WSL2。
我有一个 apache 服务器和一个 laravel 应用程序,我安装在/var/www/law
Windows 主机文件中,我添加了以下内容:

127.0.0.1   law.dev
::1 law.dev
Run Code Online (Sandbox Code Playgroud)

这是law.conf位于 的文件/etc/apache2/sites-available

<VirtualHost *:80>
    ServerName law.dev


    DocumentRoot /var/www/law/public

    <Directory /var/www/law>
    Options Indexes MultiViews
    AllowOverride None
    Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

Tor*_*ger 6

您的 WSL2 Linux 系统有自己的 IP 地址。

您可以使用以下命令获取其当前的 IP 地址(在 Windows 主机上,使用 PowerShell 或 CMD.EXE):wsl hostname -I

您现在可以在主机文件(在 Windows 主机上)中使用此 IP 地址。

WSL2 系统的 IP 地址不是静态的,因此如果您重新启动电脑,您的 WSL2 主机将具有不同的 IP 地址。

查看此票证以获取更多信息:https://github.com/microsoft/WSL/issues/4210

如果你想访问本地主机上的 apache Web 服务器,你必须使用 WSL1,它使用 Windows 主机的接口。

您可以使用以下命令将 WSL2 Linux 系统转换为 WSL1(“Ubuntu”在您的系统上可能有所不同):

wsl --set-version Ubuntu 1
Run Code Online (Sandbox Code Playgroud)

要获取 WSL2 系统的名称:

wsl --list --verbose
Run Code Online (Sandbox Code Playgroud)

输出(示例):

  NAME      STATE           VERSION
* Ubuntu    Running         2
Run Code Online (Sandbox Code Playgroud)

  • Windows `hosts` 文件中的 `::1 law.dev` 条目对于 Ubuntu 18.04 上的 WSL2 运行良好。以防万一 OP 忽略了这一点:他们的浏览器 URL 应该是 http://law.dev。我发现将像“test.html”这样的静态 HTML 文件放在我的应用程序主目录中(在 OP 的情况下为“/var/www/law”)然后在我的浏览器中尝试(http://law .dev/test.html)以确保我的问题不是由 PHP 等引起的。 (3认同)