Com crear un proxy invers amb Nginx

Actualitzat el 2026-10-07 15:00:53 51 visites

En aquest tutorial et mostrarem com i per quines raons crear un anomenat "proxy invers" amb el popular servidor web Nginx, avui dia és l'opció més popular per a aquest tipus de tasques.

Abans de començar el tutorial, no tens un servidor Cloud Linux on puguis instal·lar el teu servidor web nginx? No et preocupis! Amb només un clic, el pots desplegar fàcilment amb SW Hosting.

Què és un proxy invers?

Un proxy invers o, reverse proxy en anglès, fa referència a un servidor encarregat de mostrar contingut d'un o més servidors que, al seu torn, romanen ocults del client o l'usuari.

info Per exemple, si poses un proxy invers davant d'una aplicació web, els teus usuaris mai interactuaran directament amb l'aplicació, sinó que serà el proxy invers l'encarregat de fer d'intermediari entre els teus usuaris i l'aplicació.

Els proxys inversos poden ser una opció per incrementar la seguretat. Per exemple, ens permeten ocultar el servidor real on estan allotjades les teves aplicacions o també ens permeten implementar capes de seguretat addicionals, com per exemple, una connexió TLS que és aplicada pel proxy, però que no hauria estat suportada nativament per la teva aplicació.

Així mateix, un proxy invers resulta pràctic per servir múltiples aplicacions web des d'una mateixa màquina. L'aplicació generalment s'executarà en localhost sobre ports poc freqüents com 4000 o 5000. Aleshores, el proxy invers escoltarà els ports 80/443 i servirà el contingut d'una aplicació web o d'una altra segons l'SNI o l'host de la petició.

Crear un proxy invers amb Nginx, pas a pas

En primer lloc, hauràs de complir els següents requisits:

  1. Disposar d'accés root a un servidor Linux.
  2. Tenir instal·lat i activat Nginx. Assegurar-se de no tenir els ports 80 i 443 ocupats per un altre procés, com per exemple, Apache.
  3. Tenir executant una aplicació web en localhost a través d'un port arbitari i que estigui disponible (per exemple el port 4000). Això es pot aconseguir fàcilment amb NodeJs o .NET Core.

1. Crea un nou fitxer de virtual host

Pots aconseguir-ho utilitzant l'editor de textos nano. Una bona ruta per fer-ho és sites-available dins del directori de configuració de nginx.

nano /etc/nginx/sites-available/midominio.com.conf

2. Edita el fitxer i afegeix la configuració per al proxy invers

file midominio.com.conf

server {
  #Escolta en el port 80, ipv4.
  listen 80; 
  
  #Aquí hauràs d'introduir el nom del teu domini.
  server_name midominio.com;

  access_log            /var/log/nginx/midominio.com.access.log;

  location / {
      #La configuració del proxy.
      proxy_pass http://localhost:4000/;
  }
}

3. Reinicia Nginx

Per a sistemes operatius basats en Debian:

systemctl reload nginx

4. Lança la teva aplicació web

Arribat a aquest punt hauràs d'executar la teva aplicació web, si encara no s'està executant.

A llarg termini voldràs executar-la com a servei/domini, però per provar serà suficient que l'executis manualment.

Per exemple, si tens una aplicació NodeJS, la sintaxi és la següent:

node /ruta/applicacion.js

5. Accede a la teva aplicació web des del navegador

Si has seguit correctament els passos d'aquest tutorial i si la teva màquina no té una altra configuració de seguretat que t'obstaculitzi, ara hauries de ser capaç d'accedir a la teva aplicació des de "midominio.com" (o qualsevol que sigui el teu domini).

6. Serveix la teva aplicació de forma segura amb un certificat TLS (encarecidament recomanat)

Gràcies a Nginx com a proxy invers, pots servir fàcilment les teves aplicacions de forma segura a través d'una connexió TLS. Per aconseguir-ho, només haurem de modificar el fitxer de configuració del "virtual host" de Nginx:

server {
    listen 80;
    #Redirecciona a una connexió segura.
    return 301 https://$host$request_uri;
}

server {

    listen 443;
    #Aquí hauràs d'introduir el nom del teu domini.
    server_name midominio.com;

    #Aquí hauràs d'especificar la ruta del teu certificat SSL
    ssl_certificate           /etc/ruta/al/certificado/cert.crt;
    ssl_certificate_key       /etc/ruta/al/certificado/cert.key;

    ssl on;
    ssl_session_cache  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;

    ssl_prefer_server_ciphers on;
    ssl_session_timeout  10m;

    access_log            /var/log/nginx/midominio.com.access.log;

    location / {
    
      proxy_pass          http://localhost:4000;
    }
  }

Finalment, guarda els canvis, reinicia nginx amb:

systemctl reload nginx

i torna a executar l'aplicació, si encara no la tens com a servei o domini.

success Ja està! Si has seguit els passos correctament, ara disposaràs d'una aplicació web servida a través d'un proxy invers per nginx.

Recorda que si encara no disposes d'un servidor Cloud amb sistema operatiu Linux el pots desplegar fàcilment amb SW Hosting.