球童 header 上游

Caddy header upstream

我在使用 Caddy 代理指令时遇到了一些问题。我的 header 都乱七八糟了,有些在任何请求下都不会出现。

demo.raggaer.pw {
    tls email@gmail.com
    proxy / http://localhost:8080 {
        header_upstream Host {>Host}
            header_upstream X-Real-IP {remote}
            header_upstream X-Forwarded-For {remote}
            header_upstream X-Forwarded-Proto {scheme}
    }
}

我希望在 chrome 控制台上看到那些 header。我不。此外,所有 header 键都是小写的,这是不是很糟糕?

来自Caddy docs:

header_upstream sets headers to be passed to the backend.

您使用此指令设置的 header 对 Chrome 不可见。当 Chrome 发出请求时,它将自己的一组 header 发送给 Caddy。使用 header_upstream 指令,Caddy 可以将自己的 header 添加到来自 Chrome 的指令中。后端服务器(在您的情况下 http://localhost:8080)可以看到两组 header,但是 Chrome 不知道 Caddy 做了什么。

此外,您可能希望使用 {host} 而不是 {>Host}。这样可能更可靠一些。

最后,您看到小写 header 键的原因是因为 Chrome 正在使用 HTTP/2 与 Caddy 通信,其中所有 header 键都是小写的。来自 HTTP/2 spec:

Header field names MUST be converted to lowercase prior to their encoding in HTTP/2.