AWS : Remote IP hinter Application Loadbalancer

Problem : Man benötigt bei einem Webserver hinter einem AWS Application Loadbalancer die RemoteIP des Clients. Das Vorgehen ist eigentlich für alle LBs gültig.

Lösung : Ich verwende hier Debian auf anderen Distries sollte es ähnlich sein.
Es wird das Modul remoteip_module benötigt.
a2enmod remoteip
Dann legt man eine neue config an und aktiviert diese.
vi /etc/apache2/conf-available/loadbalancer_remoteip.conf
dort diesen Inhalt einfügen
# Settings for mod_remoteip:
# the Header X-Forwarded-For comes from AWS Application Loadbalancer
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy xxx.xxx.xxx.xxx # 1.Loadbalancer IP Intern
RemoteIPInternalProxy xxx.xxx.xxx.xxx # 2.Loadbalancer IP Intern usw.
# dont log healthy checks
SetEnvIf User-Agent ELB-HealthChecker nolog
die config aktiviert man mit
a2enconf loadbalancer_remoteip
dann anpassen der apache2.conf
# mod_remoteip LogFormat
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
in der VHost der Website dann das CustomLog anpassen bzw. eintragen
CustomLog "/var/log/apache2/site/access.log" combined env=!nolog
jetzt kann man mal testen ob die config so läuft
apache2ctl configtest
der output sollte lauten
root@xxx.xxx.xxx.xxx:/> apache2ctl configtest
Syntax OK
dann den Apache neu starten und überprüfen ob alles so läuft wie es soll
systemctl restart apache2
less +F -S /var/log/apache2/site/access.log
“Wenn du dir die Anwender deiner Programme als Idioten vorstellst, werden auch nur Idioten deine Programme verwenden.”
Linus Torvalds