WSL2 (Ubuntu 20.04) 中的 Nginx 运行 不提供 HTML 页面到端口 80 以外的另一个端口上的 Windows 10 主机

Nginx running in WSL2 (Ubuntu 20.04) does not serve HTML page to Windows 10 host on another port than port 80

我是 WSL2 的新手,但到目前为止效果非常好。 我有一个简单的 HTML 页面,我想用 Nginx 服务,但我希望它可以通过主机上的网络浏览器访问。默认的 nginx 网页有效(!),所以我开始模仿默认的 nginx html 页面(/var/www/html/index.html)。

我创建了:
/var/www/test.dev/index.html
/etc/nginx/sites-available/test.dev(+启用站点中的符号链接/)

Nginx 配置:

server {
    listen 9000;
    listen [::]:9000;

    server_name test.dev;

    root /var/www/test.dev;
    index index.html;

    location / {
            try_files $uri $uri/ =404;
    }
}

所以与默认配置的唯一大区别是端口 9000。

我 reloaded/restarted nginx 和我试图卷曲我的配置:

$ curl https://localhost

$ curl https://localhost:9000

两个请求都成功

但现在我想使用网络浏览器访问 Windows 主机上的页面。 第一个(默认)有效,我可以看到默认的 Nginx HTML 页面。 第二个不起作用:无法访问站点

所以我的问题:
1. 为什么会这样?我是否必须对 Windows 防火墙设置进行一些更改?
2. 我喜欢有一个像 example.com 这样的虚拟主机名而不是 localhost:9000
我编辑了 /etc/hosts...它适用于 curl 但同样不适用于主机浏览器

在你的 nginx 配置中你有:

  listen 9000;
  server_name test.dev;

因此您的域应该解析为: http://test.dev:9000

但是您还应该将 test.dev 添加到您的 Windows hosts 文件中 %windir%\system32\drivers\etc\hosts

127.0.0.1 test.dev