Apache reverse proxy beállítása

Adott egy internetkapcsolat, egy publikus IP-vel, egy routerrel, a belső hálózaton két szerver és két domain. Mindkét szerveren fut 1-1 web szerver (apache2). Fontos, hogy mind a két szerveren található weboldalt el lehessen érni. Tehát a domain1 tartalma a szerver1-en, míg a domain2-é a szerver2-n található. Mindkét domain az egyetlen publikus IP-re van irányítva. Természetesen a 80-as és 443-as portot csak 1 IP-re tudja forwardolni a router. A megoldást az Apache proxy modulja nyújtja.

Első lépésként az említett modult kell bekapcsolni, jelen esetben a szerver1-en, mert erre forwardoljuk a 80-as és 443-as portokat.

Második lépésként be kell állítani a vistualhostokat. A szerver2-n a szokásos módon beállítjuk a domain2-t. A szerver1-en, szintén a szokásos módon beállítjuk a domain1-et.

A szerver1-en be kell állítani a domain2-t. Lent látható a config fájl. Meg kell adni a szerver2 elérését (ProxyPass), hogy a forgalmat át tudja irányítani az apache a szerver2-re. SSL kapcsolatnál szükséges még a szerver2 tanusítványát átmásolni a szerver1-re és megadni a privát és a publikus kulcsot is. Így a böngésző a domain2-höz társított tanusítványt fogja látni.

<VirtualHost *:80>
ServerName domain2
ServerAlias domain2a

ProxyPreserveHost on
ProxyPass / http://szerver2/
ProxyPassReverse / http://szerver2/
</VirtualHost>

<VirtualHost *:443>
ServerName domain2
ServerAlias domain2a

ProxyPreserveHost on
ProxyPass / https://szerver2/
ProxyPassReverse / https://szerver2/

SSLEngine on
SSLProxyEngine on
SSLCertificateFile /etc/ssl/certs/szerver2.pem
SSLCertificateKeyFile /etc/ssl/private/szerver2.key
</VirtualHost>

Amennyiben PHP-ból tudni szeretnénk a látogató valódi IP-jét a $_SERVER[‘HTTP_X_FORWARDED_FOR’] nevű változóban kell keresnünk, ugyanis a $_SERVER[‘REMOTE_ADDR’]-ben a szerver1 IP-je lesz.

Kategória: IT Címke: , , ,