本日、サーバーの問題のトラブルシューティングを行う際、運用および保守レベルで処理されていたため、最終的にサーバーを特定しました。ユーザーが https または http を要求したかに関係なく、転送された要求が https であるかどうかに関係なく、プロキシ サーバーはポート 80 で http を受信しました。またはhttp。そこで、関連部門に問い合わせて、この値を取得できるフィールドがあるかどうかを確認しました。同社は標準ヘッダーである X-Forwarded-Proto も使用しています。
X-Forwarded-Proto (XFP) ヘッダーは、プロトコル HTTP または HTTPS を識別するために使用される標準ヘッダーです。つまり、ユーザー クライアントが実際にプロキシまたはロード バランサーに接続します。バックエンドのサーバーは、クライアントとロード バランサーの間で使用されるプロトコルを決定する場合、X-Forwarded-Proto 要求ヘッダーを使用できます。nginx は、nginx 標準以外のユーザー定義ヘッダーの読み取りをサポートしていますが、http またはサーバーで underscores_in_headers を使用してヘッダーのアンダースコア サポートを有効にしてから、proxy_set_header を使用してフィールド X-Forwarded-Proto をバックエンド サーバーに送信する必要があります。
#proxy_set_header上下文:http, server, location。语法:
proxy_set_header field value;
#默认值:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
#开启header的下划线支持:
underscores_in_headers on;
#设置向后端proxy发送X-Forwarded-Proto字段
proxy_set_header X-Forwarded-Proto $http_X_Forwarded_Proto;
proxy_set_header X-Real-IP $remote_addr;
バックエンドサーバーでは、$http_X_Forwarded_Proto を使用して受信します。$http_x_forwarded_proto などの小文字を使用して受信することもできます。先頭に http_ を追加する必要があります。