バックエンドのアプリケーションサーバでHTTPSリクエストを判定するための設定
サーバの構成として、軽量なリバースプロキシをフロントに置きバックエンドにPHPなどが動くアプリケーションサーバを配置する構成はよく使われると思います。この場合、リバースプロキシとアプリケーションサーバ間の通信は通常HTTPでおこなわれているので、リバースプロキシがクライアントとHTTPS通信をおこなっていてもバックエンドのアプリケーションではそれがわかりません。
でも、たまにアプリケーションのロジックとしてHTTPSかHTTPかを判断して処理を切り分けたい時などがあります。そんな時は以下のようにフロントのリバースプロキシにHTTPのヘッダ変数の設定をしてやればOKです。
Apacheの場合
<VirtualHost *:443> DocumentRoot "/your/documentroot" ... RequestHeader set X_SSL On ... </VirtualHost>
nginxの場合
server { root /your/documentroot; ... proxy_set_header X-SSL On; ... }
んでアプリケーションサーバで動くPHPでは以下のように判定できる
if ($_SERVER['HTTP_X_SSL'] === 'on') { // httpsのときの処理 } else { // httpのときの処理 }