如何使用 Caddy 通过反向代理维护所有标头

Lan*_*thy 5 reverse-proxy caddy

我使用 Caddy 作为反向代理,这样我只需要在网关中打开 2 个端口(一个用于 http,一个用于 https)。

我更喜欢使用80443,但我的 UniFi USG(网关)会干扰 443 并破坏 SSL。如果我选择另一个端口并为其添加端口转发,它工作正常......但这对于我需要的每个服务器路由来说都是不合理的,因为我的防火墙将变成瑞士奶酪。

因此,反向代理非常适合此目的。我只会打开 2 个端口:88这些444端口将连接到反向代理。在 Caddy 中,我可以轻松地在 Caddyfile 中设置目标端口:

// DNS points to the gateway's IP
mysubdomain.mydomain.com {
    reverse_proxy {
      to https://192.168.1.IP:443
      transport http {
          read_buffer 4096
      }
    {
}
Run Code Online (Sandbox Code Playgroud)

问题

在我的第一次尝试中,我的 SSL 不起作用(感谢代理修改的标头),因此我查看了Caddy 反向代理标头文档,发现它们确实修改了 2 个标头:

  • 它添加或扩充了X-Forwarded-For标头字段。
  • 它设置X-Forwarded-Proto标头字段。

我应该使用什么值,以便 Caddy 传递原始值,或者不添加任何内容?

当前配置

这是我目前拥有的,我应该使用什么来确保 X-Forwarded 标头不被更改或添加?

mysubdomain.mydomain.com {
    reverse_proxy {
      to https://192.168.1.IP:443
      transport http {
          read_buffer 4096
      }
    {
    header_up Host {http.request.host}
    header_up X-Real-IP {http.request.remote.host}
    header_up X-Forwarded-For { ?? }
    header up X-Forwarded-Port { ?? }
    header_up X-Forwarded-Proto { ?? }
}
Run Code Online (Sandbox Code Playgroud)

后续问题:除了我已经设置的设置之外,还应该使用其他设置吗?

Jon*_*han 4

这应该可以做到

https://mysubdomain.mydomain.com {
    reverse_proxy localhost:8080 {
        header_up Host {host} # redundant
        header_up X-Real-IP {remote}
        header_up X-Forwarded-For {remote}  # redundant
        header_up X-Forwarded-Port {server_port} # redundant
        header_up X-Forwarded-Proto {scheme}
      }
}
Run Code Online (Sandbox Code Playgroud)

标记为冗余的是默认值,请参阅 https://github.com/caddyserver/caddy/issues/2873