リバースプロキシとして動作しているApacheでは、バックエンドのサーバにリクエストを中継する際に、任意のリクエストヘッダを追加することができる。アクセスしてきたデバイスがスマートフォンの場合のみリクエストヘッダを足したいニーズがあったので設定方法をメモしておく。
User-agentがスマートフォンの場合のみリクエストヘッダを追加する
httpd.conf
# User-Agentがスマホの場合は環境変数deviceにsmartphoneをセットする
BrowserMatch "(^MobileSafari|^Mozilla/5\.0 \((iPhone;|iPod;|Linux; U; Android .* Mobile|Linux; Android .* Mobile))" device=smartphone
# 環境変数deviceがsmartphoneの場合、環境変数isspにtrueをセットする
SetEnvIf device ^smartphone$ issp=true
# 環境変数isspが存在する場合、リクエストヘッダX-TEST-HEADERに値SPをセットする
RequestHeader set X-TEST-HEADER SP env=issp
注意点
- RequestHeader ディレクティブでは環境変数の有無を条件にできるが、環境変数の値は条件にできないため、SetEnvIfディレクティブで環境変数deviceの値を判別している
- mod_headers, mod_setenvifを読み込んでおく必要がある