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 Host
和 X-Forwarded-For
,因为某些应用程序可能会解析 header 中的 url s,而 Host
header 是开发时通常使用的(例如,古代版本的 Codeingiter)自动解析 url。
另外,其他框架也可能会因为缺少合适的 header 而停止提供内容,从而导致开发 PITA(另一个未在 souvlaki 中使用的 ;))。
如此 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 Host
和 X-Forwarded-For
,因为某些应用程序可能会解析 header 中的 url s,而 Host
header 是开发时通常使用的(例如,古代版本的 Codeingiter)自动解析 url。
另外,其他框架也可能会因为缺少合适的 header 而停止提供内容,从而导致开发 PITA(另一个未在 souvlaki 中使用的 ;))。