12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HerokuでPHPとApacheのバージョンを隠す方法

Last updated at Posted at 2014-10-20

HerokuでPHPを動かすと、HTTPヘッダーにPHPのバージョンとApacheのバージョン(nginxを使っている場合はnginxのバージョン)が丸見えになる。Herokuで動かしていることがばれればバージョンは明らかなのだけれど、念のため隠しておきたいな、という場合にどうぞ。

Procfileの指定

Procfile
web: sh web_boot.sh

スクリプトを起動するように書き換え。

web_boot.shの指定

web_boot.sh
# Apache configuration
echo "ServerSignature Off" >> /app/vendor/heroku/heroku-buildpack-php/conf/apache2/heroku.conf
echo "ServerTokens Prod" >> /app/vendor/heroku/heroku-buildpack-php/conf/apache2/heroku.conf
 
# PHP configuration
sed -i 's/^expose_php = On/expose_php = Off/' /app/vendor/heroku/heroku-buildpack-php/conf/php/php.ini
 
# Launch Apache with PHP
vendor/bin/heroku-php-apache2 public

やっていることは単純で、ServerSignature OffServerTokens ProdをApacheの設定ファイルに書き加えて、expose_php = Offphp.iniの設定を変更しているだけ。その後いつも通りにApacheの起動スクリプトを実行している(この場合publicが公開ディレクトリーになる)。

ちなみにPHPの場合、.user.iniなどを利用して一部設定の上書きを行えるのだが、expose_phpの設定は上書きできない。また、ApacheのServerTokensなども.htaccessの利用では上書きできないのでこのような対処が必要になった。

補足

この方法はあくまでheroku-buildpack-phpの構成ありきのものなので、buildbackの構成が変わったら使えなくなるので注意。そもそもHeroku側でHTTPヘッダーからは隠しておいてほしかったりする…。

一般的なHerokuとPHPの組み合わせの使い方はHerokuでPHPを使うときに気を付けるところに書いたのでよろしければどうぞ。

12
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?