0. 環境
[CentOS] 6.8 (64bit版カーネル)
[Apache] 2.2.15
1. 問題
ApacheのProxyPassディレクティブ(mod_proxy)を指定して、バックエンドから受け取ったコンテンツを表示しようとするとhtmlタグがそのまま表示されてしまいます。
Apache設定ファイルの抜粋
NameVirtualHost *:80 # 省略 <VirtualHost *:80> ServerAdmin test@local ServerName test.local ProxyPreserveHost On ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ ErrorLog logs/test.local-error_log CustomLog logs/test.local-access_log combined </VirtualHost>
2. 対策
ChromeのDeveloper Toolsなどで見ると、下記のようにHTTPレスポンスヘッダーで平文が指定されています。
Content-Type text/plain; charset=UTF-8
デフォルトのMIMEタイプ指定を無効にすることで解消しました。
Apache設定ファイルの抜粋
NameVirtualHost *:80 # 省略 <VirtualHost *:80> ServerAdmin test@local ServerName test.local # ----- この行を追加 ----- DefaultType None # ----- この行を追加 ----- ProxyPreserveHost On ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ ErrorLog logs/test.local-error_log CustomLog logs/test.local-access_log combined </VirtualHost>