Forgot your password?

Forgot your username?

All about IT, Web and Development.
By users for users.

Nginx als Reverse Proxy - Installation und Einrichtung



Ein Reverse Proxy ist vergleichbar mit einem Gateway, welches Anfragen entgegen nimmt und an die entsprechenden Server weiterleitet. Diese finden vor allem zur Absicherung von Webservern oder zur Lastverteilung Verwendung.



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.


Hier sieht man auch gleich die Flexibilität von Nginx. Möchten wir nun eine Lastverteilung auf Applikationsebene realisieren, können wir das Backend um weitere Server erweitern.

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

Michael Kostka

Fachinformatiker / Systemintegration
Ich schreibe hier regelmäßig zu den Themen Android, Web, Linux und Hardware.

Raspberry Pi Starter Kit
DataCloud

Leave a comment

I have read the privacy policy and agree to electronically store and process my input data to answer the request.