En aquest tema, aprendrem què és un proxy invers, per què és útil i com NGINX pot ser configurat per actuar com a proxy invers. Un proxy invers és una eina poderosa que pot millorar la seguretat, el rendiment i la gestió del trànsit de les aplicacions web.
Què és un proxy invers?
Un proxy invers és un servidor que es troba entre els clients i els servidors d'aplicacions. Quan un client fa una sol·licitud, aquesta és rebuda pel proxy invers, que després la redirigeix al servidor d'aplicacions adequat. La resposta del servidor d'aplicacions és enviada de nou al proxy invers, que finalment la retorna al client.
Beneficis d'un proxy invers
- Seguretat: Amaga els servidors d'aplicacions dels clients, protegint-los de possibles atacs directes.
- Balanceig de càrrega: Distribueix les sol·licituds entre diversos servidors d'aplicacions per evitar sobrecàrregues.
- Caché: Emmagatzema respostes de manera temporal per reduir la càrrega dels servidors d'aplicacions i millorar el temps de resposta.
- SSL/TLS: Gestiona la terminació SSL/TLS, descarregant aquesta tasca dels servidors d'aplicacions.
- Comprovacions de salut: Monitoritza l'estat dels servidors d'aplicacions i redirigeix el trànsit només als servidors que estan funcionant correctament.
Com funciona un proxy invers amb NGINX?
NGINX és una eina molt popular per configurar un proxy invers gràcies a la seva eficiència i flexibilitat. A continuació, veurem un exemple bàsic de configuració de NGINX com a proxy invers.
Exemple de configuració bàsica
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;
: Indica que el servidor escoltarà a la porta 80 (HTTP).server_name example.com;
: Defineix el nom del servidor.location / { ... }
: Defineix una ubicació que coincideix amb totes les sol·licituds.proxy_pass http://backend_server;
: Redirigeix les sol·licituds al servidor d'aplicacions anomenatbackend_server
.proxy_set_header Host $host;
: Configura l'encapçalamentHost
amb el nom del servidor.proxy_set_header X-Real-IP $remote_addr;
: Afegeix l'adreça IP real del client a l'encapçalamentX-Real-IP
.proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
: Afegeix l'adreça IP del client a l'encapçalamentX-Forwarded-For
.proxy_set_header X-Forwarded-Proto $scheme;
: Afegeix el protocol utilitzat (HTTP o HTTPS) a l'encapçalamentX-Forwarded-Proto
.
Exercici pràctic
Objectiu: Configurar NGINX com a proxy invers per a un servidor d'aplicacions local.
- Instal·la NGINX si no ho has fet ja.
- Crea un fitxer de configuració per al teu servidor NGINX (per exemple,
/etc/nginx/conf.d/reverse_proxy.conf
). - Afegeix la configuració següent al fitxer:
server { listen 80; server_name localhost; location / { proxy_pass http://127.0.0.1:8080; 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; } }
- Reinicia NGINX per aplicar els canvis:
- Verifica la configuració accedint a
http://localhost
des del teu navegador. Hauries de veure la resposta del servidor d'aplicacions que escolta a la porta 8080.
Solució de problemes comuns
- Error 502 Bad Gateway: Això pot indicar que el servidor d'aplicacions no està disponible o que NGINX no pot connectar-s'hi. Verifica que el servidor d'aplicacions està en funcionament i que la configuració de
proxy_pass
és correcta. - Error 404 Not Found: Assegura't que la ruta de la sol·licitud és correcta i que el servidor d'aplicacions pot gestionar-la.
Conclusió
En aquest tema, hem après què és un proxy invers, els seus beneficis i com configurar NGINX per actuar com a proxy invers. Aquesta configuració és fonamental per millorar la seguretat, el rendiment i la gestió del trànsit de les aplicacions web. En el següent tema, aprofundirem en la configuració detallada d'un proxy invers amb NGINX.
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