Der schlanke Webserver Nginx bietet sich dank seiner flexiblen Konfiguration sehr für die Aufgabe eines Reverse Proxys an.
Installation
In der Regel findet sich Nginx in jeder Linux Distribution in den Paketquellen. Unter Debian / Ubuntu erfolgt die Installation über apt-get.
sudo apt-get install nginx
Unter CentOS wird der Paketmanager yum verwendet.
yum install nginx
Konfigration
Im nächsten Schritt konfigurieren wir Nginx als Reverse Proxy. Hierzu leeren wir erst die Konfigurationsdatei um eine saubere Ausgangsbasis zu haben.
echo "" > /etc/nginx/sites-enabled/default
Nun können wir die Konfigurationsdatei anpassen.
# Backend
upstream server_backend {
server 192.168.1.10:80; # Webserver 1
}
## Frontend - Reverse Proxy ##
server {
listen 192.168.1.1:80;
server_name www.example.com;
access_log /var/log/nginx/log/www.example.access.log main;
error_log /var/log/nginx/log/www.example.error.log;
root /usr/share/nginx/www;
index index.html index.htm;
## Definition Reverse Proxy ##
location / {
proxy_pass http://server_backend;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Die Konfiguration setzt sich grundlegend aus dem Backend und dem Frontend zusammen. Über das Frontend nimmt der Nginx Reverse Proxy die Anfragen entgegen und leitet diese an das Backend (in unserem Fall server_backend) weiter.
Load Balancing
upsteam server_backend {
server 192.168.1.10:80;
server 192.168.1.11:80;
server 192.168.1.12:80;
}
Gewichtung / Priorität
Kommen dabei unterschiedlich starke Backend Server zum Einsatz kann man den Traffic auch priorisieren.
upsteam server_backend {
server 192.168.1.10:80 weight=1; # Backend 1
server 192.168.1.11:80 weight=2; # Backend 2
server 192.168.1.12:80 weight=4; # Backend 3
}
Je höher die Gewichtung desto mehr Traffic bekommt der Backend Server. Beispielsweise bekommt der Server 192.168.1.10 den doppelten Traffic im Vergleich zum Backend 1.
Das Backend 3 erhält somit die meisten Anfragen.
Fazit
Nginx bietet sehr vielfältige Einsatzgebiete. Wer allerdings einen Loadbalancer realisieren möchte sollte lieber auf den schnelleren HAProxy Loadbalancer zurückgreifen. Im Vergleich zwischen Nginx und HAProxy sieht man die genauen Zahlen.
Quellen: Nginx Logo
Hinterlasse einen Kommentar