VPS · Guia

Guia de nginx com a proxy invers

Actualitzat October 11, 2026 5 min de lectura

En aquesta pàgina
  1. Què fa un proxy invers
  2. Pas 1: Instal·la nginx
  3. Pas 2: Crea el server block del proxy
  4. Les capçaleres i la barra final
  5. WebSockets
  6. Pas 3: HTTPS gratuït amb Certbot
  7. Com solucionar els errors 502, 504 i 413
  8. Executa-ho en un VPS d'HytHost
  9. PMF

Un proxy invers (reverse proxy) se situa davant de les teves aplicacions i els passa les peticions dels visitants. Amb nginx al davant, una aplicació Node.js, un contenidor Docker o un panell que s'executa en algun port es converteix en https://app.example.com, amb HTTPS, les capçaleres correctes i un sol lloc per gestionar-ho tot.

Aquesta guia configura nginx com a proxy invers a Ubuntu, pas a pas: el server block, les capçaleres, els WebSockets, l'HTTPS gratuït i els errors que és més probable que et trobis.

Què fa un proxy invers

  • Un únic punt d'entrada públic. nginx escolta als ports 80 i 443 i envia cada domini o ruta a l'aplicació adequada, de manera que les aplicacions mateixes mai no queden exposades a internet.
  • HTTPS en un sol lloc. nginx gestiona els certificats; les aplicacions del darrere poden parlar HTTP pla a localhost.
  • Diverses aplicacions en un servidor. app.example.com, api.example.com i example.com/blog poden anar cadascun a un servei diferent.
  • Extres: compressió, memòria cau, límits de pujada i regles d'accés, sense tocar l'aplicació.

Pas 1: Instal·la nginx

sudo apt update
sudo apt install nginx

Obre http://your-server-ip i hauries de veure la pàgina de benvinguda de nginx. Si fas servir ufw, permet el trànsit web amb sudo ufw allow 'Nginx Full'.

Assegura't que la teva aplicació s'està executant i és accessible des del mateix servidor, per exemple amb curl http://127.0.0.1:3000. Si això falla, nginx també fallarà.

Executa nginx i les teves aplicacions amb accés root complet: els plans VPS KVM d'HytHost comencen a €2.92/mes.

Veure plans VPS

Pas 2: Crea el server block del proxy

A Ubuntu, cada lloc té un fitxer a /etc/nginx/sites-available/, que s'activa amb un enllaç a sites-enabled. Crea /etc/nginx/sites-available/app.example.com:

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

Activa'l, prova la configuració i recarrega:

sudo ln -s /etc/nginx/sites-available/app.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Apunta el registre A del domini al teu servidor i http://app.example.com ja mostrarà la teva aplicació. Executa sempre nginx -t abans de recarregar: detecta les errades abans que facin caure el lloc.

Les capçaleres i la barra final

  • Host passa el domini que ha demanat el visitant. Sense ella, nginx envia l'adreça de proxy_pass, i les aplicacions que construeixen enllaços a partir del host deixen de funcionar.
  • X-Real-IP i X-Forwarded-For passen l'adreça IP del visitant. Sense elles, totes les peticions semblen venir de 127.0.0.1.
  • X-Forwarded-Proto indica a l'aplicació si el visitant ha fet servir HTTPS, perquè no redirigeixi en bucle.

El paquet nginx d'Ubuntu inclou aquestes línies a /etc/nginx/proxy_params, així que include proxy_params; és una drecera.

La barra final importa. Per a una aplicació sota una ruta:

location /app/ {
    proxy_pass http://127.0.0.1:3000/;
}

Amb la barra després del port, /app/login arriba a l'aplicació com a /login. Sense ella, l'aplicació rep el /app/login sencer.

WebSockets

Les aplicacions de xat, els panells en directe i molts panells d'administració fan servir WebSockets, que necessiten dues capçaleres addicionals. Afegeix aquest map una sola vegada, dins del bloc http, per exemple en un fitxer nou /etc/nginx/conf.d/websocket.conf:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

Després, dins del location:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 1h;

nginx tanca una connexió amb proxy que no envia res durant 60 segons; un proxy_read_timeout més llarg manté oberts els WebSockets silenciosos. proxy_http_version 1.1 només és el valor per defecte a partir de nginx 1.29.7, i Ubuntu 24.04 porta la 1.24, així que conserva la línia.

Pas 3: HTTPS gratuït amb Certbot

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --nginx -d app.example.com

Certbot obté un certificat gratuït de Let's Encrypt, afegeix la configuració HTTPS al teu server block i pot redirigir HTTP cap a HTTPS. Renova el certificat automàticament; comprova-ho amb sudo certbot renew --dry-run. Més informació sobre certificats a com obtenir un certificat SSL gratuït.

Com solucionar els errors 502, 504 i 413

ErrorCausa habitualSolució
502 Bad Gatewaynginx no pot arribar a l'aplicació: està aturada, s'ha bloquejat o escolta en un altre port o adreçaInicia l'aplicació, comprova el port amb curl http://127.0.0.1:PORT, llegeix /var/log/nginx/error.log
504 Gateway TimeoutL'aplicació ha trigat més de 60 segons a respondreAccelera la petició o augmenta proxy_read_timeout per a aquell location
413 Request Entity Too LargeUna pujada supera el límit per defecte de nginx d'1 MBPosa client_max_body_size 50m; al server block
Bucle de redireccionsL'aplicació no sap que el visitant ha fet servir HTTPSPassa X-Forwarded-Proto i indica a l'aplicació que és darrere d'un proxy

Després de cada canvi: sudo nginx -t i, a continuació, sudo systemctl reload nginx.

Executa-ho en un VPS d'HytHost

Un proxy invers necessita un servidor on controlis els ports 80 i 443. Els plans VPS d'HytHost funcionen sobre KVM amb accés root complet, emmagatzematge SSD i protecció DDoS; tria Ubuntu 24.04 i segueix els passos anteriors. Executes les teves aplicacions en contenidors? Configura primer Docker amb com instal·lar Docker a Ubuntu i vincula els ports dels contenidors a 127.0.0.1 perquè només nginx hi pugui arribar.

PMF

Preguntes freqüents

Un proxy invers reenvia les peticions a una o més aplicacions que té al darrere. Un balancejador de càrrega és un proxy invers que reparteix les peticions entre diverses còpies de la mateixa aplicació. nginx pot fer totes dues coses, amb un bloc upstream que llista les còpies.

nginx no pot arribar a l'aplicació que té al darrere. Comprova que l'aplicació s'està executant i escolta a l'adreça i el port de proxy_pass, i llegeix /var/log/nginx/error.log per saber-ne el motiu exacte.

No, si l'aplicació s'executa al mateix servidor. nginx gestiona l'HTTPS per als visitants i parla amb l'aplicació per HTTP pla a 127.0.0.1, que mai no surt de la màquina.

Dona a cada aplicació el seu propi server block amb el seu propi server_name, com ara app.example.com i api.example.com, cadascun amb un proxy_pass cap a un port diferent.

Sí. Publica el port de cada contenidor només a 127.0.0.1 i apunta-hi proxy_pass. Així els contenidors queden fora de l'internet públic, cosa important perquè els ports publicats de Docker se salten ufw.

Allotja les teves aplicacions darrere de nginx

Els plans VPS KVM d'HytHost amb accés root complet, emmagatzematge SSD i protecció DDoS comencen a €2.92/mes.

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

T'ha estat útil aquesta guia?