Cómo configurar Nginx Reverse Proxy

Cómo configurar Nginx Reverse Proxy

En esta guía, aprenderá cómo configurar un proxy inverso Nginx con instrucciones paso a paso. También explicaremos cómo funciona un servidor de proxy inverso y cuáles son sus ventajas. Además, también repasamos varias opciones de configuración que los administradores de Linux emplean comúnmente en sus servidores de proxy inverso.

En este tutorial aprenderás:

  • ¿Cómo funciona un proxy inverso?
  • ¿Cuáles son los beneficios de un proxy inverso?
  • Cómo configurar Nginx Reverse Proxy
  • Cómo pasar los encabezados
  • Cómo configurar el equilibrio de carga
  • Cómo probar la configuración de Nginx
Cómo configurar Nginx Reverse Proxy

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución
Software Nginx
Otro Acceso privilegiado a su sistema Linux como root o a través del sudo dominio.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

¿Cómo funciona un proxy inverso??

Un sistema que se encuentra entre un cliente y un servidor web (o servidores) se puede configurar como un proxy inverso. El servicio proxy actúa como un interfaz y funciona al manejar todas las solicitudes de clientes entrantes y distribuirlas a la web, la base de datos y/u otros servidores de back -end.



Beneficios de un proxy inverso

La configuración de un proxy inverso NGINX significa que todas las solicitudes entrantes se manejan en un solo punto, que proporciona varias ventajas:

  • Balanceo de carga - El proxy inverso distribuye las conexiones entrantes a los servidores de backend, e incluso puede hacerlo de acuerdo con la carga actual que se encuentra cada servidor. Esto asegura que ninguno de los servidores de backend se sobrecargue con solicitudes. También previene el tiempo de inactividad, ya que el proxy inverso puede redirigir el tráfico si un servidor de backend se desconectará.
  • Registro central - En lugar de hacer que varios servidores generen archivos de registro, el proxy inverso puede registrar toda la información relevante en una sola ubicación. Esto hace que el trabajo del administrador sea inmensamente más fácil, ya que los problemas pueden aislarse mucho más rápidamente y no es necesario analizar los archivos de registro de múltiples ubicaciones al solucionar problemas.
  • Seguridad mejorada - Un proxy inverso ofuscará información sobre los servidores de backend, así como actuará como una primera línea de defensa contra los ataques entrantes. Dado que el proxy inverso está filtrando el tráfico antes de reenviarlo al backend, solo se transfiere el tráfico inocuo a los otros servidores.
  • Mejor interpretación - Un servidor proxy inverso puede tomar decisiones inteligentes sobre cómo distribuir la carga en los servidores de backend, lo que resulta en tiempos de respuesta más rápidos. Otras tareas del servidor común, como el almacenamiento en caché y la compresión, también se pueden descargar al servidor proxy inverso, liberando recursos para los servidores de backend.
SABÍAS?
Un servidor proxy inverso no es un componente necesario en cada escenario de alojamiento web. Las ventajas de un proxy inverso se vuelven más aparentes en condiciones o situaciones de alto tráfico donde se implementan múltiples servidores de backend y necesitan alguna forma de equilibrio de carga.

Por qué nginx?

Ahora que hemos esbozado las ventajas de un proxy inverso, es posible que se pregunte por qué debe configurar uno con Nginx, específicamente. La escalabilidad de NGINX y su capacidad probada para manejar un volumen extremadamente alto de conexiones significa que es perfecto para el despliegue como un proxy inversa y un equilibrador de carga.

Una aplicación común es colocar a Nginx entre los clientes y un servidor web, donde puede funcionar como un punto final para el cifrado SSL y el acelerador web. Las operaciones que normalmente aumentarían la carga en un servidor web, como el cifrado, la compresión y el almacenamiento en caché se pueden hacer de manera más eficiente a través de un proxy inverso NGINX.

Cómo configurar las instrucciones de Nginx Reverse Proxy paso a paso

Dado que hemos explicado cómo funciona un proxy inverso y cuáles son las ventajas para usar una, en esta sección revisaremos los pasos necesarios para configurar un proxy inverso NGINX.

  1. Instalar nginxyou puede instalar nginx con el administrador de paquetes de su sistema. En las distribuciones de Ubuntu y Debian, el comando es:
    $ sudo apt-get install nginx 

    En CentOS y Distribuciones de Hat Red:

    # yum install nginx 
  2. Deshabilitar el host virtual predeterminado
    # Unlink/etc/nginx/sites-habilitado/predeterminado 


  3. Cree una configuración de proxy inversa FileAll de la configuración para el proxy inverso entrará dentro de un archivo de configuración, y este archivo debe colocarse dentro del directorio disponible para sitios. Comience navegando al siguiente directorio:
    # CD/ETC/NGINX/Sites disponible 

    Luego use VI o su editor de texto preferido para crear el archivo de configuración:

    # VI Reverse-Proxy.confusión 

    Pegue la siguiente plantilla de configuración en este archivo recién creado:

    servidor escuchar 80; Ubicación/Some/Path/proxy_pass http: // ejemplo.com;  
    Copiar

    Reemplazar ejemplo.comunicarse con la dirección IP o el nombre de host del servidor al que está reenviando. También puede especificar un puerto con el nombre de host, como 127.0.0.1: 8080 Por ejemplo. Guarde sus cambios y luego salga del editor de texto.

    Tenga en cuenta que esto funcionará para los servidores HTTP, pero NGINX también admite otros protocolos. Cubriremos esas opciones en la siguiente sección.

  4. Habilite el proxy con su configuración guardada, habilite la nueva configuración creando un enlace simbólico al directorio habilitado para sitios:
    # ln -s/etc/nginx/sites-disponible/inverso-proxy.conf/etc/nginx/sites-habilitado/reverso-proxy.confusión 

Servidores no http

El ejemplo anterior muestra cómo pasar las solicitudes a un servidor HTTP, pero también es posible que NGINX actúe como un proxy inverso para Fastcgi, Uwsgi, SCGI, y memcached. En lugar de usar el proxy_pass Directiva que se muestra arriba, reemplácelo con el tipo apropiado:

  • proxy_pass (servidor HTTP - como se ve arriba)
  • FastCGI_Pass (servidor FastCGI)
  • UWSGI_PASS (servidor UWSGI)
  • SCGI_Pass (servidor SCGI)
  • memcached_pass (servidor Memcached)
Ejemplo predeterminado para la directiva FastCGI_Pass

Cómo pasar los encabezados

Para configurar qué encabezados, el servidor proxy inverso pasa a los otros servidores, podemos definirlos en el archivo de configuración que hicimos anteriormente. Utilizar el proxy_set_header directiva para ajustar los encabezados.
Se pueden configurar en el servidor, ubicación o bloque HTTP. Por ejemplo:

Ubicación/Some/Path/proxy_set_header host $ host; proxy_set_header x-forwarded-proto $ esquema; proxy_set_header X-Real-IP $ Remote_addr; proxy_pass http: // ejemplo.com; 
Copiar

El ejemplo anterior define tres tipos de encabezados y los establece en las variables respectivas. Hay muchas opciones diferentes para pasar los encabezados, pero este ejemplo muestra tres que son muy comunes.

El Anfitrión el encabezado contiene información sobre qué anfitrión se solicita. El X-Forwarded-Proto especies de encabezado si la solicitud es http o https. Y el X-REAL-IP El encabezado contiene la dirección IP del cliente solicitante.

Cómo configurar el equilibrio de carga

El equilibrio de carga es una de las principales justificaciones para configurar un servidor proxy inverso. Podemos comenzar agregando algunas líneas adicionales al archivo de configuración que creamos anteriormente. Eche un vistazo a un ejemplo:

Upstream backend_servers servidor host1.ejemplo.com; host de servidor2.ejemplo.com; Host3 del servidor3.ejemplo.com;  servidor escuchar 80; Ejemplo de server_name.com; ubicación/proxy_pass http: // backend_servers; 
Copiar

En este ejemplo, hemos agregado un contexto llamado backend_servers. Dentro de allí, el nombre de host/IP de cada servidor se especifica en una línea separada.

En el proxy_pass Directiva, donde normalmente ingresamos un nombre de host o dirección IP, en su lugar hemos especificado el nombre del contexto aguas arriba definido anteriormente: backend_servers.

Esta configuración reenviará las solicitudes entrantes a ejemplo.comunicarse a los tres hosts diferentes especificados en nuestro ascensor. De forma predeterminada, NGINX reenviará estas solicitudes Round Robin, lo que significa que cada host toma un giro en la solicitud de una solicitud.



Configurar algoritmos de equilibrio de carga

Como se mencionó, Round Robin es el algoritmo predeterminado que Nginx usará para rotar las solicitudes en el flujo ascendente. Hay algunos otros algoritmos disponibles, que se ajustan mejor a ciertas situaciones:

  • Menario_conn - Distribuye las conexiones entrantes a los servidores de backend en función de su número actual de conexiones activas. Un servidor solo recibirá una solicitud si tiene la menor cantidad de conexiones en ese momento. Esto es particularmente útil en aplicaciones que requieren conexiones duraderas con el cliente.
  • ip_hash - Distribuye las conexiones entrantes en función de la dirección IP del cliente. Esto es útil si necesita crear consistencia de la sesión.
  • picadillo - Distribuye las conexiones entrantes basadas en una clave hash. Esto es útil con los anfitriones Memcached, particularmente.

Especifique un método de equilibrio de carga en la parte superior del contexto aguas arriba, como así:

Upstream backend_servers MENSE_CONN; host de servidor1.ejemplo.com; host de servidor2.ejemplo.com; Host3 del servidor3.ejemplo.com; 
Copiar

Cómo probar la configuración de Nginx

Siempre debe probar su configuración para obtener errores inmediatamente después de editar el .confusión archivo y luego reiniciar Nginx.

# Servicio Nginx ConfigTest # Servicio Nginx reiniciar 

Conclusión

En este artículo vimos cómo configurar un servidor proxy inverso con Nginx. También aprendimos cómo funciona un servidor de proxy inverso y cuáles son las ventajas para usar uno. Cubrimos el equilibrio de carga y las diversas opciones que un administrador necesita para configurarlo en su propio proxy inverso.

Después de seguir los pasos de esta guía, con suerte verá un aumento significativo de rendimiento en su entorno web y le resulta más fácil administrar ahora que las conexiones entrantes se están enviando a un solo punto.

Tutoriales de Linux relacionados:

  • Instalación de encabezados de kernel de Manjaro Linux
  • Cosas para instalar en Ubuntu 20.04
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • ¿Con qué frecuencia tiene que reiniciar su servidor de Linux??
  • Openlitespeed como proxy inverso
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
  • Sistema colgado de Linux? Cómo escapar a la línea de comando y ..
  • Ubuntu 20.04 Guía