Chrome/mium & Brave 浏览器无法识别 127.0.0.1 之外的 IP 中的任何其他 .localhost 子域

Chrome/mium & Brave browser does not recognize any other .locahost subdomain in an Ip ouside 127.0.0.1

如此 question google chrome 和任何基于 cromium 的浏览器(Brave Browser,Chromium)将强制任何 .localhost 子域在 127.0. 0.1,它将忽略 /etc/hosts 文件中的任何条目。

但在我的团队中,惯例是使用指向 vagrant 运行 虚拟机的 .localhost 子域,而不是 127.0.0.1 因此这使得整个工作流程中断异构团队(每个成员在他的电脑上都有不同的os)

如何绕过这个问题?

绕过这个问题的一个好方法是让每个 workstation/employer 的本地反向代理侦听 127.0.0.1 以及您用来与 in-development 应用程序通信的任何端口。

一个简单的方法是利用 nginx 网络服务器。假设 .localhost 子域是 myapp.localhost 并且 vagrant vm 侦听 ip 192.168.10.80,正确的 nginx 设置是:

server {
 listen 80;
 server_name myapp.localhost;
 location / {
    proxy_set_header Host            $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://192.168.10.80;
 }
}

在 ubuntu GNU/Linux 发行版中,您应该删除 /etc/nginx/sites-enabled/default 创建一个新文件到 /etc/nginx/sites-available 并将符号链接到 etc/nginx/sites-enabled/ 文件夹。

NOTE: Use full paths during symlinking instead of relative ones.

此外,正如您注意到的,我还传递了 headers HostX-Forwarded-For,因为某些应用程序可能会解析 header 中的 url s,而 Host header 是开发时通常使用的(例如,古代版本的 Codeingiter)自动解析 url。

另外,其他框架也可能会因为缺少合适的 header 而停止提供内容,从而导致开发 PITA(另一个未在 souvlaki 中使用的 ;))。