私は数年前にDigitalOceanドロップレットでいくつかのサービスをDockerコンテナーとして実行しており、最近、それらの1つを最新バージョンに更新するときだと思いました(問題のサービスはゴーストブログプラットフォームです)。以前は、私の設定では caddy をリバースプロキシとして使用していたため、blog.mydomain.example
にアクセスしてブログにアクセスできました。 Caddyfileのセットアップは次のようになります。
blog.mydomain.example {
proxy / 192.0.2.5:1268
}
ここで、IP:ポートはローカルゴーストDockerコンテナーのポートです。
ただし、ゴーストインスタンスを最新バージョンに更新し、同じ構成を維持した後、奇妙なエラーが発生しました。 blog.mydomain.example
に移動すると、しばらくの間ロードされ、その後突然 https://192.0.2.5:2368 にリダイレクトされます。もちろん、これは私の液滴のローカルIPであるため機能しません。長い間インターネットを精査した後、私は最終的に修正を見つけました、それは私のように私のCaddyfileを修正することを必要としました:
blog.mydomain.example {
proxy / 192.0.2.5:1268 {
transparent
}
}
プロキシのキャディドキュメントページ は、トランスペアレントの機能について少し説明しています。
transparent:ほとんどのバックエンドアプリが期待するとおり、元のリクエストからホスト情報を渡します。
略語:
header_upstream Host {Host}
header_upstream X-Real-IP {remote}
header_upstream X-Forwarded-For {remote}
header_upstream X-Forwarded-Proto {scheme}
プロキシの種類について この記事 も読んでいますが、リバースプロキシを透過的にすることの意味と、この場合になぜ必要なのかについては、まだ混乱しています。誰かが光を当てることができますか?
ここでは、CaddyがリクエストをDockerコンテナ内のウェブサーバーに渡すときに、HTTPホストヘッダーを取り除いてリクエストを変更しないことを意味します。
これらが現在必要な理由である可能性があります。
Host
ヘッダーがソフトウェアで設定されたホスト名と一致するようになりました。Host
ヘッダーが削除されるようになりました。