Qué es y para que sirve un proxy inverso con Nginx
Tabla de contenido:
- Prerrequisitos
- Usando Nginx como un proxy inverso
- Pasar encabezados de solicitud
- Configuración de Nginx como proxy inverso para un servidor proxy no HTTP
- Opciones comunes de proxy inverso de Nginx
- Conclusión
Un proxy inverso es un servicio que toma una solicitud del cliente, envía la solicitud a uno o más servidores proxy, obtiene la respuesta y entrega la respuesta del servidor al cliente.
Debido a su rendimiento y escalabilidad, NGINX a menudo se usa como proxy inverso para servidores HTTP y no HTTP. Una configuración típica de proxy inverso es colocar Nginx frente a las aplicaciones Node.js, Python o Java.
Usar Nginx como proxy inverso le brinda varios beneficios adicionales:
- Equilibrio de carga: Nginx puede realizar el equilibrio de carga para distribuir las solicitudes de los clientes en servidores proxy, lo que mejora el rendimiento, la escalabilidad y la confiabilidad. Almacenamiento en caché: con Nginx como proxy inverso, puede almacenar en caché las versiones preprocesadas de las páginas para acelerar los tiempos de carga de la página. Funciona almacenando en caché el contenido recibido de las respuestas de los servidores proxy y usándolo para responder a los clientes sin tener que contactar al servidor proxy para obtener el mismo contenido cada vez. Terminación SSL: Nginx puede actuar como un punto final SSL para las conexiones con los clientes. Manejará y descifrará las conexiones SSL entrantes y cifrará las respuestas del servidor proxy. Compresión: si el servidor proxy no envía respuestas comprimidas, puede configurar Nginx para comprimir las respuestas antes de enviarlas a los clientes. Mitigación de los ataques DDoS: puede limitar las solicitudes entrantes y el número de conexiones por dirección IP a un valor típico para los usuarios normales. Nginx también le permite bloquear o restringir el acceso en función de la ubicación del cliente y el valor de los encabezados de solicitud como "User-Agent" y "Referer".
Este artículo describe los pasos necesarios para configurar Nginx como proxy inverso.
Prerrequisitos
Asumimos que tiene instalado Nginx en su servidor Ubuntu, CentOS o Debian.
Usando Nginx como un proxy inverso
Para configurar Nginx como un proxy inverso a un servidor HTTP, abra el archivo de configuración de bloqueo del servidor del dominio y especifique una ubicación y un servidor proxy dentro de él:
server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }
La URL del servidor proxy se configura con la directiva
proxy_pass
y puede usar
HTTP
o
HTTPS
como protocolo, nombre de dominio o dirección IP, y un puerto opcional y URI como dirección.
La configuración anterior le dice a Nginx que pase todas las solicitudes a la ubicación
/app
al servidor proxy en
http://127.0.0.1:8080
.
/etc/nginx/sites-available
, mientras que en CentOS en el directorio
/etc/nginx/conf.d
.
Para ilustrar mejor cómo funcionan las directivas
location
y
proxy_pass
, tomemos el siguiente ejemplo:
server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }
Si un visitante accede a
http://example.com/blog/my-post
, Nginx enviará esta solicitud a
http://node1.com:8000/wordpress/my-post
.
Cuando la dirección del servidor proxy contiene un URI, (
/wordpress/
), el URI de solicitud que se pasa al servidor proxy se reemplaza por un URI especificado en la directiva. Si la dirección del servidor proxy se especifica sin un URI, el URI completo de la solicitud se pasa al servidor proxy.
Pasar encabezados de solicitud
Cuando Nginx envía una solicitud por proxy, define automáticamente dos campos de encabezado en las solicitudes por proxy del cliente,
Host
y
Connection
, y elimina los encabezados vacíos.
Host
está configurado en la variable
$proxy_host
y la
Connection
está configurada para cerrarse.
Para ajustar o establecer encabezados para conexiones proxy, use la directiva
proxy_set_header
, seguida del valor del encabezado. Puede encontrar una lista de todos los encabezados de solicitud disponibles y sus valores permitidos aquí. Si desea evitar que se pase un encabezado al servidor proxy, configúrelo en una cadena vacía
""
.
En el siguiente ejemplo, estamos cambiando el valor del campo del encabezado
Host
a
$host
y eliminando el campo del encabezado
Accept-Encoding
estableciendo su valor en una cadena vacía.
location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }
Siempre que modifique el archivo de configuración, debe reiniciar el servicio Nginx para que los cambios surtan efecto.
Configuración de Nginx como proxy inverso para un servidor proxy no HTTP
Para configurar Nginx como un proxy inverso a un servidor proxy no HTTP, puede usar las siguientes directivas:
-
fastcgi_pass- proxy inverso a un servidor FastCGI.uwsgi_pass: proxy inverso a un servidor uwsgi.scgi_pass- proxy inverso a un servidor SCGI.memcached_pass- proxy inverso a un servidor Memcached.
Uno de los ejemplos más comunes es usar Nginx como proxy inverso a PHP-FPM:
server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }
Opciones comunes de proxy inverso de Nginx
Servir contenido a través de HTTPS se ha convertido en un estándar hoy en día. En esta sección, le daremos un ejemplo de la configuración del proxy inverso Nginx HTTPS, incluidos los parámetros y encabezados del proxy Nginx recomendados.
location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }
-
proxy_http_version 1.1: define la versión del protocolo HTTP para el proxy, de manera predeterminada, se establece en 1.0. Para las conexiones Websockets ykeepalive, debe usar la versión 1.1.proxy_cache_bypass $http_upgrade: establece las condiciones bajo las cuales la respuesta no se tomará de un caché.Upgrade $http_upgradeyConnection "upgrade": estos campos de encabezado son obligatorios si su aplicación usa Websockets.Host $host: la variable$hosten el siguiente orden de precedencia contiene: nombre de host de la línea de solicitud, o nombre de host del campo de encabezado de solicitud deHost, o el nombre del servidor que coincide con una solicitud.X-Real-IP $remote_addr:X-Real-IP $remote_addrla dirección IP remota del visitante real al servidor proxy.X-Forwarded-For $proxy_add_x_forwarded_for: una lista que contiene las direcciones IP de cada servidor a través del cual se ha enviado proxy al cliente.X-Forwarded-Proto $scheme: cuando se usa dentro de un bloque de servidor HTTPS, cada respuesta HTTP del servidor proxy se reescribe enX-Forwarded-Host $host: define el host original solicitado por el cliente.X-Forwarded-Port $server_port: define el puerto original solicitado por el cliente.
Conclusión
Has aprendido a usar Nginx como un proxy inverso. También le hemos mostrado cómo pasar parámetros adicionales al servidor y modificar y establecer diferentes campos de encabezado en las solicitudes proxy.
nginxConfigurar las configuraciones del servidor proxy en Windows 10 / 8.1
Windows 10 / 8.1 facilita la configuración o la configuración del servidor proxy. Un Servidor Proxy local puede mejorar el rendimiento de su conexión de banda ancha y brindar protección contra el malware.
Cómo configurar Proxy para Windows Store en Windows 8/10
Aprenda a habilitar o configurar Proxy Server para Store o Aplicaciones de Metro en Windows 10/8 usando el comando Netsh, configuraciones de Proxy o a través de la configuración de la Política de grupo.
Configure odoo con nginx como proxy inverso
Odoo viene con un servidor web incorporado, pero en la mayoría de los casos se recomienda tener un proxy inverso frente a él que actuará como intermediario entre los clientes y el servidor Odoo. Esta guía proporciona instrucciones sobre cómo usar Nginx como proxy inverso de Odoo.







