“透明反向代理”到底是什么?

“透明反向代理”到底是什么?

几年来,我一直在 DigitalOcean droplet 上以 docker 容器的形式运行一些服务,最近我觉得是时候将其中一个服务更新到最新版本了(这个服务是 ghost blogging platform)。之前,我的工作设置是使用球童作为反向代理,这样我就可以通过 访问我的博客blog.mydomain.example。Caddyfile 设置如下:

blog.mydomain.example {
    proxy / 192.0.2.5:1268
}

其中 IP:port 是本地 ghost docker 容器的 IP:port。

然而,在将我的 ghost 实例更新到最新版本并保持相同的配置后,我遇到了一个奇怪的错误。导航到blog.mydomain.example会加载很长时间,然后突然重定向到https://192.0.2.5:2368,这当然行不通,因为这是我的 droplet 上的本地 IP。经过长时间的搜索,我终于找到了解决办法,需要修改我的 Caddyfile,如下所示:

blog.mydomain.example {
    proxy / 192.0.2.5:1268 {
        transparent
    }
}

代理的 caddy 文档页面对透明功能做了一些说明:

透明的:传递来自原始请求的主机信息,就像大多数后端应用程序所期望的那样。
简写形式:
header_upstream Host {host}
header_upstream X-Real-IP {remote}
header_upstream X-Forwarded-For {remote}
header_upstream X-Forwarded-Proto {scheme}

我也读过本文关于代理类型,但我仍然不明白使反向代理透明意味着什么,以及为什么在这种情况下需要它。有人能解释一下吗?

答案1

这里的意思是,Caddy 在将请求传递到 Docker 容器中的 Web 服务器时不会通过删除 HTTP Host 标头来修改请求。

这些可能是现在需要它的原因:

  1. 您的博客软件已更新,现在需要Host标头与软件中设置的主机名相匹配。
  2. Caddy 的代理行为已被修改,因此现在Host默认删除标头。

相关内容