Reverse-Proxy

如何使用 Caddy 通過反向代理維護 所有標頭

  • May 11, 2021

我使用 Caddy 作為反向代理,因此我只需要在我的網關中打開 2 個埠(一個用於 http,一個用於 https)。

我更喜歡使用80and 443,但我的 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
     }
   {
}

問題

在我的第一次嘗試中,我的 SSL 不起作用(感謝代理修改的標頭),所以我查看了Caddy Reverse Proxy Headers文件,發現他們確實修改了 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 { ?? }
}

跟進問題:除了我設置的設置之外,我還應該使用其他設置嗎?

這應該這樣做

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}
     }
}

標記為冗餘的是預設的,見 https://github.com/caddyserver/caddy/issues/2873

引用自:https://serverfault.com/questions/1035435