在 Linux 本地机器上,是否可以强制 443 端口上的所有对主机名(在 /etc/hosts 中定义)的请求使用另一个端口?
例如:如果我的浏览器尝试获取https://host.domain.org,将会联系 host.domain.org:666。
我知道存在一些浏览器扩展,但我正在寻找系统级解决方案。
我必须使用 iptables 吗?
更新:
此主机是我公司的前端门户,公开了十几个端口,每个端口都是后端 HTTPS 服务器上的重定向。
例如:
- https://host.domain.org:1001指向 Zimbra 服务器
- https://host.domain.org:1002通向 GLPI 服务器
- ETC
到目前为止,我曾经使用过 Chromium 的一个扩展程序(名为 switcheroo),它可以根据 URL 的模式重定向 URL。因此,我在 /etc/hosts 中写入了一行,如下所示:
ip_of_the_portal zimbra.mydomain.org glpi.mydomain.org
在我的扩展中,我写了一些这样的规则:
"https://zimbra.mydomain.org" -> "https://zimbra.mydomain.org:1001"
"https://glpi.mydomain.org" -> "https://glpi.mydomain.org:1002"
因此,每次同事给我一个 Zimbra 的 URL 时,我的浏览器都会自动连接“:1001”,一切运行正常。
我遇到的问题是关于一个棘手的网络服务器(假设在公共 PAT 门户的端口 1002 上可用),它在请求响应中给出了一些 HTTP 重定向,而我的小扩展无法应对它并且它绕过了我的规则。
答案1
好的,为了避免做一些太棘手或不可能的事情,我编写了一个 chromium 扩展来改变每个请求的“Host”HTTP 标头。
问题在于 Apache 服务器读取“Host”http 标头以做出一些决定。由于我是通过 PAT 从企业外部进入的,因此此标头为“host:port”,当 Apache 在此字段中看到未知端口时,它会发送 302 以进行重定向,而不是发送请求的页面。
为了解决这个问题,我的扩展删除了 Host HTTP 标头的“:port”,Apache 服务器返回了正确的页面。
感谢所有阅读并回答我最初那个愚蠢的问题的人:)。