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

  1. Configuració del Bloc 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. Substitueix backend_server amb l'adreça IP o el nom de domini del teu servidor backend.
  • proxy_set_header Host $host;: Configura la capçalera Host per a la sol·licitud redirigida.
  • proxy_set_header X-Real-IP $remote_addr;: Afegeix la capçalera X-Real-IP amb l'adreça IP del client.
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;: Afegeix la capçalera X-Forwarded-For amb la cadena de capçaleres X-Forwarded-For existents i l'adreça IP del client.
  • proxy_set_header X-Forwarded-Proto $scheme;: Afegeix la capçalera X-Forwarded-Proto amb el protocol utilitzat (HTTP o HTTPS).

  1. 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

  1. Crea un fitxer de configuració per a NGINX.
  2. Defineix un bloc server que escolti al port 80.
  3. 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

  1. Defineix un grup de servidors backend.
  2. 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.

© Copyright 2024. Tots els drets reservats