Probléma, hogy a proxy a saját IP címét továbbítja az Apache-nak, így nem látom a valós felhasználó IP címét. Architektúra: 1db Nginx proxy, ami 1 db külső IP címmel rendelkezik ő a host, valamint számos VPS, illetve belső hálózati szerver amiken Apache található.
Nginx beállítása a hoston
Hozd létre a /etc/nginx/proxy_params nevű állományt az alábbi tartalommal:
#cat /etc/nginx/proxy_params
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Virtuális szerver neve int1: /etc/nginx/sites-available/int1.domain.tld
server {
listen 80;
listen [::]:80;
server_name int1.domain.tld;
location / {
include proxy_params;
proxy_pass http://192.168.1.10:80;
}
}
Mint látható a location-ban deklarálom hogyan és mit tegyen az adott domainnel. Behúzom a proxy paramétereket, majd átirányítom egy belső gép felé. A portot nem kell megadni default 80 esetén, csak azért írtam bele, hogy látható legyen a lehetőség arra, ha pl. az adott belső szerveren több porton futnak szolgáltatások, ilyen lehet pl. docker, lxd, etc.
Apache belső szerver beállítása
Hozd létre a konfigurációs fájlt az Apache alatt. Ebben állítod be, hogy mi a proxy IP címe. Ez amit az Apache-od eddig látott a kliens helyett.
/etc/apache2/conf-available/remoteip.conf tartalma nálam:
<IfModule mod_remoteip.c>
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 192.168.1.1
</IfModule>
A host Nginx proxy IP címe nálam: 192.168.1.1, ha pl a host és a VPS-ek azonos gépen lennének, akkor ide valószínűleg 127.0.0.1-et kellene írnom.
Nincs más hátra, mint engedélyezni az Apache-ban a szolgáltatást. Ubuntu-n ez így néz ki:
sudo a2enconf remoteip
sudo a2enmod remoteip
sudo systemctl restart apache2
Reload kevés, újra kell indítani a szervert.