Apache 2.4でグローバルIPアドレスを用いたアクセス制御を行う場合、以下のようにRequireディレクティブでアクセス元のグローバルIPアドレスを指定する。
<Directory /var/www/html/test>
Require ip 8.8.8.8
</Directory>
で、この時にAWSのELB(ALB)の後ろにいる場合だと、Apache側で認識するアクセス元IPアドレスはELBのローカルネットワークアドレスになってしまう。 Require ipでグローバルIPアドレスを認識する場合は、以下の一行をhttpd.confに追記してやり送信元IPアドレスにX-Forwarded-Forのものを利用する。
RemoteIPHeader X-Forwarded-For
これで、Require ipでのアクセス制御が行えるようになる。
なお、この際にもしhttpdのログでアクセス元のIPアドレスとして「%{X-Forwarded-For}i」を指定していた場合、すでに利用済になっているためアクセス元IPアドレスが何も表示されなくなってしまう。
この場合は、「%{X-Forwarded-For}i
」ではなく「%a
」を指定してやることでグローバルIPアドレスをログに記録できるようになる。
# ↓コメントアウト
# LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined