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\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined