Wie können wir helfen?
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";
}
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.