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
serverPrimer, 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_serveramb l'adreça IP o el nom de domini del teu servidor backend.proxy_set_header Host $host;: Configura la capçaleraHostper a la sol·licitud redirigida.proxy_set_header X-Real-IP $remote_addr;: Afegeix la capçaleraX-Real-IPamb l'adreça IP del client.proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;: Afegeix la capçaleraX-Forwarded-Foramb la cadena de capçaleresX-Forwarded-Forexistents i l'adreça IP del client.proxy_set_header X-Forwarded-Proto $scheme;: Afegeix la capçaleraX-Forwarded-Protoamb 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
serverque 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
