2

正如在这个问题中看到的那样,谷歌浏览器和任何基于 cromium 的浏览器(Brave Browser、Chromium)都会强制任何子.localhost域位于 127.0.0.1 中,并且它将引入/etc/hosts文件中的任何条目。

但是在我的团队中,惯例是使用.localhost指向vagrant正在运行的 vm 的子域,127.0.0.1因此这会使整个工作流程进入异构团队(每个成员的计算机都有不同的操作系统)

我怎样才能绕过这个问题?

4

1 回答 1

1

绕过此问题的一个好方法是让每个工作站/雇主的本地反向代理监听127.0.0.1以及您用来与开发中应用程序通信的任何端口。

一个简单的方法是利用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/文件夹中。

注意:在符号链接期间使用完整路径而不是相对路径。

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

此外,对于其他框架,也可能由于缺少适当的标头而停止提供内容,从而导致开发 PITA(在 souvlaki 中未使用的另一个;))。

于 2019-06-12T15:06:07.120 回答