LoginSignup
12
13

More than 5 years have passed since last update.

ELB + Apache で本番サーバを運用するときによくやる設定

Last updated at Posted at 2016-09-06

Apache 2.4 について書いてるので、2.2 だとちょっと違うかもしれない

Apache

Apache のバージョンを表示させない

httpd.conf
ServerSignature Off
ServerTokens Prod
  • サーバーエラー時に Apache のバージョン表示消す
  • HTTP ヘッダから Apache のバージョン消す

アクセスログの設定

httpd.conf
LogFormat "host:%{X-Forwarded-For}i\tident:%l\tuser:%u\ttime:%{%d/%b/%Y:%H:%M:%S %z}t\tmethod:%m\tpath:%U%q\tprotocol:%H\tstatus:%>s\tsize:%b\treferer:%{Referer}i\tagent:%{User-Agent}i\tresponse_time:%D" ltsv
SetEnvIf User-Agent "ELB-HealthChecker" nolog
SetEnvIf User-Agent "internal dummy connection" nolog
CustomLog "logs/access_log" ltsv env=!nolog

ELB のときの http → https リダイレクト設定

httpd.conf
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Port} !^443$
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteCond %{HTTP:X-FORWARDED-FOR} !^$
RewriteRule ^(.*)?$ https://%{HTTP_HOST}$1 [R=301,L]
  • ELB のヘルスチェックはリダイレクトしない
  • ELB 以外 (VPC 内部) からのアクセスはリダイレクトしない

SSL に関する設定はアプリケーション側にあまり意識してほしくないので .htaccess に書くよりも httpd.conf に書いたほうが良いと思う

ELB

アイドルタイムアウトを 20 秒に設定する

Apache 2.4 を使っているとアクセスログに 408 エラーが大量に出るので、ELB の設定でアイドルタイムアウトを 60 秒から 20 秒に変更する

参考: ELB-httpd間で408エラー多発 - 駆け出しアクアテラリストのIT奮闘記

オマケ: PHP

X-POWERED-BY ヘッダで PHP のバージョンを送るのをやめる

php.ini
expose_php = Off
12
13
1

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
13