Wie können wir helfen?

Kategorien
Inhalt

Umfassende Anleitung zur Einrichtung eines Nginx Reverse Proxy unter Linux

Navigation:
< zurück

Einleitung

Ein Reverse Proxy ermöglicht es, Anfragen an verschiedene Backend-Server weiterzuleiten und bietet zusätzliche Vorteile wie Lastverteilung, Caching und SSL-Terminierung. Nginx ist ein weit verbreiteter Webserver, der sich hervorragend als Reverse Proxy eignet.

Installation von Nginx

Stellen Sie sicher, dass Nginx installiert ist:

sudo apt update
sudo apt install nginx

Grundkonfiguration

Die Hauptkonfigurationsdatei von Nginx befindet sich unter /etc/nginx/nginx.conf. Für spezifische Konfigurationen legen wir eine neue Datei in /etc/nginx/sites-available/ an und aktivieren diese dann in /etc/nginx/sites-enabled/.

Beispiel für eine grundlegende Reverse Proxy-Konfiguration:

sudo nano /etc/nginx/sites-available/reverse-proxy.conf

Inhalt der Datei:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $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;
    }
}

Ersetzen Sie backend_server mit der IP-Adresse oder dem DNS-Namen des Backend-Servers.

Aktivieren der Konfiguration:

sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx

Erweiterte Konfiguration

Load Balancing

Um Lastverteilung zu implementieren, definieren Sie mehrere Backend-Server:

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $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;
    }
}
SSL-Terminierung

Um SSL-Terminierung hinzuzufügen, installieren Sie zunächst ein SSL-Zertifikat und aktualisieren die Konfiguration:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

Aktualisieren Sie dann die Nginx-Konfiguration, um SSL zu unterstützen:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $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;
    }
}

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}
Caching

Nginx kann auch als Caching-Proxy konfiguriert werden:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_cache my_cache;
        proxy_pass http://backend_server;
        proxy_set_header Host $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;
    }
}

Header-Manipulation

Um spezielle Header hinzuzufügen oder zu ändern, verwenden Sie add_header und proxy_set_header:

location / {
    proxy_pass http://backend_server;
    proxy_set_header Host $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;
    add_header X-Custom-Header "value";
}

Umfassende Anleitung zur Einrichtung eines Nginx Reverse Proxy unter Linux

Einleitung

Ein Reverse Proxy ermöglicht es, Anfragen an verschiedene Backend-Server weiterzuleiten und bietet zusätzliche Vorteile wie Lastverteilung, Caching und SSL-Terminierung. Nginx ist ein weit verbreiteter Webserver, der sich hervorragend als Reverse Proxy eignet.

Installation von Nginx

Stellen Sie sicher, dass Nginx installiert ist:

sudo apt update
sudo apt install nginx

Grundkonfiguration

Die Hauptkonfigurationsdatei von Nginx befindet sich unter /etc/nginx/nginx.conf. Für spezifische Konfigurationen legen wir eine neue Datei in /etc/nginx/sites-available/ an und aktivieren diese dann in /etc/nginx/sites-enabled/.

Beispiel für eine grundlegende Reverse Proxy-Konfiguration:

sudo nano /etc/nginx/sites-available/reverse-proxy.conf

Inhalt der Datei:

server {
listen 80;
server_name example.com;

location / {
proxy_pass http://backend_server;
proxy_set_header Host $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;
}
}

Ersetzen Sie backend_server mit der IP-Adresse oder dem DNS-Namen des Backend-Servers.

Aktivieren der Konfiguration:

sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx

Erweiterte Konfiguration

Load Balancing

Um Lastverteilung zu implementieren, definieren Sie mehrere Backend-Server:

upstream backend {
server backend1.example.com;
server backend2.example.com;
}

server {
listen 80;
server_name example.com;

location / {
proxy_pass http://backend;
proxy_set_header Host $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;
}
}
SSL-Terminierung

Um SSL-Terminierung hinzuzufügen, installieren Sie zunächst ein SSL-Zertifikat und aktualisieren die Konfiguration:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

Aktualisieren Sie dann die Nginx-Konfiguration, um SSL zu unterstützen:

server {
listen 443 ssl;
server_name example.com;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

location / {
proxy_pass http://backend_server;
proxy_set_header Host $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;
}
}

server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
Caching

Nginx kann auch als Caching-Proxy konfiguriert werden:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";

server {
listen 80;
server_name example.com;

location / {
proxy_cache my_cache;
proxy_pass http://backend_server;
proxy_set_header Host $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;
}
}
Header-Manipulation

Um spezielle Header hinzuzufügen oder zu ändern, verwenden Sie add_header und proxy_set_header:

location / {
proxy_pass http://backend_server;
proxy_set_header Host $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;
add_header X-Custom-Header "value";
}

PHP-Unterstützung

Um PHP-Anfragen zu verarbeiten, installieren Sie php-fpm und konfigurieren Nginx entsprechend:

sudo apt install php-fpm

Konfigurationsbeispiel:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $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;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
}

Fazit

Die Konfiguration von Nginx als Reverse Proxy bietet zahlreiche Vorteile und Flexibilität für die Verwaltung von Anfragen an Backend-Server. Mit den hier vorgestellten Beispielen können Sie eine Vielzahl von Szenarien abdecken und Nginx optimal an Ihre Bedürfnisse anpassen.