En aquest tema, aprendrem a configurar NGINX com a proxy invers. Un proxy invers és un servidor que es troba entre els clients i els servidors backend, redirigint les sol·licituds dels clients als servidors adequats. Aquesta configuració és útil per a la distribució de càrrega, la seguretat i la gestió de trànsit.
Objectius
- Entendre el concepte de proxy invers.
- Configurar NGINX per actuar com a proxy invers.
- Redirigir sol·licituds a servidors backend.
- Gestionar capçaleres HTTP.
Conceptes Clau
- Proxy invers: Un servidor que redirigeix les sol·licituds dels clients a un o més servidors backend.
- Backend: El servidor o servidors que processen les sol·licituds redirigides pel proxy invers.
- Capçaleres HTTP: Informació addicional enviada amb les sol·licituds i respostes HTTP.
Configuració Bàsica
- Configuració del Bloc
server
server
Primer, hem de definir un bloc server
en el fitxer de configuració de NGINX (nginx.conf
o un fitxer de configuració específic del lloc).
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; } }
Explicació del Codi
listen 80;
: NGINX escoltarà les sol·licituds HTTP al port 80.server_name example.com;
: Defineix el nom del servidor.location / { ... }
: Defineix una ubicació per a totes les sol·licituds que coincideixin amb/
.proxy_pass http://backend_server;
: Redirigeix les sol·licituds al servidor backend. Substitueixbackend_server
amb l'adreça IP o el nom de domini del teu servidor backend.proxy_set_header Host $host;
: Configura la capçaleraHost
per a la sol·licitud redirigida.proxy_set_header X-Real-IP $remote_addr;
: Afegeix la capçaleraX-Real-IP
amb l'adreça IP del client.proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
: Afegeix la capçaleraX-Forwarded-For
amb la cadena de capçaleresX-Forwarded-For
existents i l'adreça IP del client.proxy_set_header X-Forwarded-Proto $scheme;
: Afegeix la capçaleraX-Forwarded-Proto
amb el protocol utilitzat (HTTP o HTTPS).
- Configuració de Servidors Backend
Pots definir múltiples servidors backend per a la distribució de càrrega.
upstream backend_servers { server backend1.example.com; server backend2.example.com; } server { listen 80; server_name example.com; location / { proxy_pass http://backend_servers; 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; } }
Explicació del Codi
upstream backend_servers { ... }
: Defineix un grup de servidors backend.server backend1.example.com;
: Afegeix un servidor backend al grup.server backend2.example.com;
: Afegeix un altre servidor backend al grup.proxy_pass http://backend_servers;
: Redirigeix les sol·licituds al grup de servidors backend.
Exercici Pràctic
Exercici 1: Configurar un Proxy Invers Bàsic
- Crea un fitxer de configuració per a NGINX.
- Defineix un bloc
server
que escolti al port 80. - Configura NGINX per redirigir les sol·licituds a un servidor backend.
Solució
server { listen 80; server_name mysite.com; location / { proxy_pass http://backend.mysite.com; 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; } }
Exercici 2: Configurar un Grup de Servidors Backend
- Defineix un grup de servidors backend.
- Configura NGINX per redirigir les sol·licituds a aquest grup de servidors.
Solució
upstream my_backend { server backend1.mysite.com; server backend2.mysite.com; } server { listen 80; server_name mysite.com; location / { proxy_pass http://my_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; } }
Errors Comuns i Consells
- Error 502 Bad Gateway: Assegura't que els servidors backend estan en funcionament i accessibles des de NGINX.
- Capçaleres Incorrectes: Verifica que les capçaleres HTTP estan configurades correctament per evitar problemes de seguretat i autenticació.
- Configuració de DNS: Si utilitzes noms de domini per als servidors backend, assegura't que els registres DNS estan configurats correctament.
Conclusió
En aquest tema, hem après a configurar NGINX com a proxy invers, redirigint les sol·licituds dels clients a servidors backend. Hem vist com definir blocs server
i upstream
, i com gestionar les capçaleres HTTP per assegurar una configuració correcta i segura. Amb aquesta base, estem preparats per explorar funcions més avançades com el balanceig de càrrega i les comprovacions de salut en els següents temes.
Curs de NGINX
Mòdul 1: Introducció a NGINX
Mòdul 2: NGINX com a servidor web
- Servint contingut estàtic
- Llistats de directoris
- Pàgines d'error personalitzades
- Registre i formats de registre