PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tutorial: Apache Reverse Proxy aufsetzen | Debian



Alexej
18.02.2020, 22:57
Hi,

hier ein kleines Tutorial, das zeigt, wie man ganz einfach Apache als Reverse-Proxy aufsetzt.
Da hier viele danach gesucht haben und auch Noobs ein Recht auf Sicherheit haben, werde ich es mit euch teilen. :P


Los gehts:

1.) apt install apache2
2.) a2enmod proxy
3.) a2enmod proxy_http
4.) a2dissite 000-default.conf
5.) service apache2 reload

Damit hat man Apache2 installiert und die Module Proxy und Proxy_http geladen und die Standard Website "entladen".

Dann folgende Datei anlegen (in meinem Fall heißt sie "reverseproxy.conf":

1.) nano /etc/apache2/sites-available/reverseproxy.conf

Folgendes in die reverseproxy.conf einfügen:


<VirtualHost *:80>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ServerName domain.tld #<----- Die Seitendomain
ServerAlias www.domain.tld #<----- Die Seitendomain
ServerAdmin [email protected]
ProxyPreserveHost On
ProxyPass / http://xxx.xxx.xxx.xxx/ #<----- Die IP vom Backend-Server, wo die Seite drauf liegt
ProxyPassReverse / http://xxx.xx.xxx.xxx/ #<----- Die IP zum Backend-Server, wo die Seite drauf liegt
</VirtualHost>

Dann die ganze Sache noch laden (mit a2ensite) und den Apache neu laden:

1.) a2ensite reverseproxy.conf
2.) service apache2 reload

Apache neu starten.

Sollte jetzt soweit funktionieren.

Dann kann man noch Let's Encrypt installieren, wenn man will, damit die Domain SSL verschlüsselt ist:

1.) apt-get remove certbot
2.) wget https://dl.eff.org/certbot-auto --no-check-certificate
3.) mv certbot-auto /usr/local/bin/certbot-auto
4.) chown root /usr/local/bin/certbot-auto
5.) chmod 0755 /usr/local/bin/certbot-auto

Und dann noch folgendes, um die Zertifikate zu erstellen:

1.) /usr/local/bin/certbot-auto --apache

Automatisches Update der Zertifikate:

1.) echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew" | sudo tee -a /etc/crontab > /dev/null

Fertig.


Damit die originalen IPs und nicht die des Proxys an das Backend geschickt werden, noch folgendes:

Mod_remoteip aktivieren:

1.) a2enmod remoteip

Dann die Datei "remoteip.conf" anlegen:

1.) nano /etc/apache2/conf-available/remoteip.conf

Folgendes in die remoteip.conf einfügen:


RemoteIPHeader X-Forwarded-For

Config laden:

1.) a2enconf remoteip.conf
2.) service apache2 reload

Dann noch die "00_nameserver.conf" ändern:

1.) nano /etc/apache2/sites-enabled/00_nameserver.conf

Folgendes:

LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" vlogger

Ersetzen mit:

LogFormat "%v %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" vlogger

Apache neu starten.

Fertig.


Die Reverse-Proxy-Server-IP muss natürlich via A-Record auf die Domain zeigen.


Verbesserungsvorschläge sind gerne gesehen. :)

Gruß
Alexej

banane
19.02.2020, 23:48
Finde ich gut, danke.
Man sollte aber vielleicht erwähnen das die installierten Module nur mit dem HTTP/S Protokoll arbeiten, für jedes andere Übertragungsprotokoll muss man ein zusätzliches Modul integrieren. Für FTP beispielsweise, muss das Modul mod_proxy_ftp zusätzlich in Apache installiert werden.