Cómo configurar un proxy inverso (paso a paso para Nginx y Apache)
Publicado: 2020-08-14Un proxy inverso se encuentra frente a un servidor web y recibe todas las solicitudes antes de que lleguen al servidor de origen. Funciona de manera similar a un proxy de reenvío, excepto que en este caso es el servidor web el que usa el proxy en lugar del usuario o cliente. Los proxies inversos se utilizan normalmente para mejorar el rendimiento, la seguridad y la fiabilidad del servidor web.
Por ejemplo, puede tener un sitio que no sea de WordPress alojado en el dominio example.com
en el Servidor A y tener su blog ejecutándose en WordPress en la URL example.com/blog
alojada en el Servidor B. Puede lograr esto agregando un proxy inverso para el servidor que aloja su sitio principal. Puede configurar el proxy inverso para redirigir las solicitudes del blog a un servidor diferente (por ejemplo, un host de WordPress administrado como Kinsta).
En este artículo, aprenderá los conceptos básicos de los servidores proxy inversos, cómo funcionan, cuáles son sus principales beneficios y cómo puede usarlos para acelerar y asegurar su sitio de WordPress.
¿Emocionado? ¡Empecemos!
¿Qué es un proxy inverso?
Para comprender qué es un servidor proxy inverso, primero debe conocer su función y familiarizarse con todos los términos relacionados.
Cuando navega por la web normalmente ingresando un nombre de dominio o haciendo clic en un enlace, su navegador/dispositivo se conecta directamente al servidor del sitio web y comienza a descargar sus recursos.

Si desea anonimizar su dirección IP de los sitios web que visita, puede usar un servidor proxy para enviarle todas sus solicitudes primero. Reenviará sus solicitudes al sistema de resolución de DNS y luego descargará los recursos del sitio web desde su servidor de origen.
Luego, pasará esos recursos a su dispositivo. Esto se denomina proxy de reenvío.

Está completamente oculto del sitio web, ya que cree que su solicitud se origina en el proxy de reenvío.
Además de mejorar la privacidad del usuario, un proxy de reenvío se utiliza principalmente para eludir las restricciones de contenido geográfico. Por ejemplo, si desea ver un video que está bloqueado en su región, puede usar un proxy de reenvío con una dirección IP en la que el video esté disponible para verlo.
Un proxy de reenvío funciona casi de la misma manera que una red privada virtual (VPN), pero son tecnologías distintas con casos de uso únicos (aunque a veces pueden superponerse).
Servidor proxy inverso frente a servidor proxy directo
Un servidor proxy inverso actúa como un frente para el servidor de origen para mantener el anonimato y mejorar la seguridad, al igual que un usuario/cliente puede usar un proxy de reenvío para lograr lo mismo. Asegura que ningún usuario o cliente se comunique directamente con el servidor de origen.

La diferencia entre un proxy directo y un proxy inverso es menor, pero funcionan de manera diferente.
Ambos pueden trabajar juntos ya que no hay superposición entre su funcionamiento. Por lo general, los usuarios/clientes usan un proxy de reenvío, mientras que los servidores de origen usan un proxy inverso.

Dado que un administrador del servidor puede controlar cómo funciona el proxy inverso, puede usarlo para habilitar muchas funciones útiles.
Enumeraremos todos sus beneficios más adelante en esta publicación.
¿Por qué usar un proxy inverso?
Muchas empresas, especialmente las grandes, utilizan sitios web personalizados que se adaptan a sus necesidades únicas y no se ejecutan en WordPress. Algunos ejemplos incluyen sitios web de bancos y seguros.
En otros casos, una empresa puede alojar su sitio en un servicio externo que no les permite instalar ningún software externo (por ejemplo, WordPress). Por lo general, se trata de pequeños y medianos minoristas que utilizan una plataforma de comercio electrónico como Shopify.
Debido a que WordPress tiene características sólidas de CMS, muchas empresas, incluidas las grandes empresas con sitios web personalizados, pueden preferir alojar sus blogs con WordPress.
Una forma de evitar este problema es instalar WordPress en el subdominio del sitio web principal y estructurar los menús de navegación de manera que los usuarios puedan cambiar fácilmente entre el sitio web principal y el blog.
Dado que los subdominios se comportan como un dominio único, pueden afectar el SEO de su sitio. Aunque Google trata los subdominios y los subdirectorios por igual, se necesita más esfuerzo para optimizar un sitio web para las clasificaciones de los motores de búsqueda si está alojado en un subdominio que si está alojado en un subdirectorio.

Google ha reafirmado que trata tanto a los subdominios como a los subdirectorios por igual, pero algunos expertos en SEO no están de acuerdo. E incluso si no afecta el SEO del sitio, un sitio alojado en un subdirectorio es simplemente más fácil de mantener.
Es por eso que puede usar un proxy inverso para redirigir las solicitudes al blog del sitio alojado en un servidor separado. Por ejemplo, un banco puede alojar su sitio web principal en sus servidores de forma segura, pero también puede alojar su blog impulsado por WordPress por separado en un host de WordPress administrado como Kinsta.

Unificar dos sitios diferentes bajo un solo nombre de dominio es una de las principales ventajas de usar un proxy inverso. Ayuda a las marcas a mantener sus sitios organizados, profesionales y mantener la credibilidad.
twittearBeneficios de usar un proxy inverso
Además del caso de uso anterior, los proxies inversos también otorgan muchos otros beneficios. La siguiente sección analiza algunas de sus principales ventajas.
Balanceo de carga
Un único servidor de origen no puede manejar todo el tráfico entrante de un sitio web con millones de visitantes únicos diarios. En estos casos, puede distribuir el tráfico de manera inteligente entre un grupo de muchos servidores. Por lo general, todos los servidores alojarán el mismo contenido para eliminar un solo punto de falla, lo que hace que el sitio web sea más confiable.
Un proxy inverso es una excelente manera de configurar esto, ya que puede recibir el tráfico entrante antes de que llegue al servidor de origen. Si el servidor de origen está sobrecargado o falla por completo, puede distribuir el tráfico a otros servidores sin afectar la funcionalidad del sitio.
Los proxies inversos también pueden dirigir las solicitudes entrantes a varios servidores, y cada servidor realiza una función específica para la que está optimizado. El proxy inverso puede recopilar respuestas de todos los servidores y entregarlas al cliente.
Dado que usamos la mayoría de los proxies inversos populares principalmente para el balanceo de carga, también se los conoce como balanceadores de carga .
Equilibrio de carga del servidor global (GSLB)
GSLB es un método avanzado de equilibrio de carga para distribuir el tráfico del sitio web entre muchos servidores ubicados estratégicamente en todo el mundo. Por lo general, se realiza a través de la técnica de enrutamiento anycast, donde el proxy inverso elige el nodo del servidor en función del tiempo de viaje más rápido entre el cliente y el servidor.
GSLB no solo aumenta considerablemente la confiabilidad y la seguridad del sitio, sino que también reduce la latencia y los tiempos de carga, mejorando así la experiencia del usuario. Puede usar GSLB con otras técnicas de optimización de red, como Spoon Feeding, para liberar aún más los recursos computacionales de los servidores de origen.
Aunque puede configurar el Equilibrio de carga global del servidor de forma manual en su servidor, normalmente lo gestionan CDN dedicadas, como Cloudflare y KeyCDN (que también alimenta Kinsta CDN). Kinsta sirve todos los sitios web alojados con él a través de un Load Balancer impulsado por Google Cloud Platform.
Seguridad mejorada
Los proxies inversos pueden encubrir la dirección IP y otras características de los servidores de origen. Por lo tanto, el servidor de origen de su sitio web puede mantener mejor su anonimato, aumentando significativamente su seguridad.
Dado que el proxy inverso recibirá todo el tráfico antes de que llegue al servidor principal, a cualquier atacante o pirata informático le resultará más difícil apuntar a su sitio web con amenazas de seguridad como los ataques DDoS.
Puede usar un firewall estricto para fortalecer el proxy inverso con una seguridad más estricta contra los ataques cibernéticos comunes. Sin un proxy inverso instalado, es difícil eliminar malware o iniciar eliminaciones.
Un proxy inverso como HAProxy puede agregar autenticación de acceso HTTP básica a un servidor web que no la tenga habilitada. También puede usar un proxy inverso para agregar autenticación centralizada para varios tipos de solicitudes.
Almacenamiento en caché potente
Puede utilizar un proxy inverso con fines de aceleración web mediante el almacenamiento en caché de contenido estático y dinámico. Esto puede reducir la carga en el servidor de origen, lo que da como resultado un sitio web más rápido.
Por ejemplo, si su servidor de origen está en los EE. UU. y un usuario de Europa visita su sitio web, entonces puede servir una versión en caché de su sitio desde un servidor proxy inverso en Europa. Dado que el proxy inverso está más cerca del usuario que el servidor de origen, el sitio web tardará menos en cargarse, lo que hace que funcione de manera excelente.
Varnish y Nginx FastCGI son ejemplos destacados de proxies inversos que se utilizan para almacenar contenido web en caché. Si su sitio está alojado con Kinsta, no tiene que preocuparse por el almacenamiento en caché, ya que Kinsta se encarga de todo el trabajo de almacenamiento en caché por usted.
Compresión superior
Las respuestas del servidor consumen mucho ancho de banda. Comprimir las respuestas del servidor (p. ej., con gzip) antes de enviarlas al cliente puede reducir la cantidad de ancho de banda necesario, acelerando las respuestas del servidor a través de la red.
Un proxy inverso es ideal para comprimir las respuestas del servidor, ya que se encuentra entre los servidores de origen y el cliente.
Cifrado SSL optimizado
Cifrar y descifrar solicitudes SSL/TLS para cada cliente puede ser muy exigente para el servidor de origen. Un proxy inverso puede asumir esta tarea para liberar los recursos del servidor de origen para otras tareas importantes, como servir contenido.
Otra ventaja de descargar el cifrado y descifrado SSL/TSL es reducir la latencia para los clientes que están geográficamente distantes del servidor de origen.
También puede optar por un proxy inverso con hardware de aceleración SSL/TLS especializado para optimizar aún más esta tarea. Tal proxy inverso se denomina proxy de terminación SSL/TLS. Algunos servidores como Varnish no son compatibles con los protocolos SSL/TSL, por lo que un proxy inverso de terminación SSL/TSL puede ayudar a proteger el tráfico que pasa a través de ellos.
Mejores pruebas A/B
La mayoría de las herramientas de prueba A/B requieren que use bibliotecas de JavaScript externas para cargar sus funciones. Sin embargo, cargar scripts de terceros puede ralentizar los tiempos de carga de su página y crear una experiencia entrecortada para los usuarios.
En su lugar, puede usar un proxy inverso para crear dos flujos separados en el nivel del servidor. Por ejemplo, puede usar los split_clients
o sticky route
de Nginx para controlar la redirección del tráfico.
Puede consultar los tutoriales sobre Nginx y freeCodeCamp para obtener más información sobre cómo realizar pruebas A/B con un proxy inverso.
Monitoreo y registro de tráfico
Un proxy inverso captura cualquier solicitud que pase por él. Por lo tanto, puede usarlos como un centro central para monitorear y registrar el tráfico. Incluso si utiliza varios servidores web para alojar todos los componentes de su sitio web, el uso de un proxy inverso facilitará el seguimiento de todos los datos entrantes y salientes de su sitio.
Los proxies inversos más populares
Según W3Techs, casi el 83% de los sitios web no utilizan servicios de proxy inverso que controlen.

Del 17 % de los sitios web que utilizan un proxy inverso (enumerados anteriormente), notará que la mayoría de ellos son CDN. Esto se debe a que la mayoría de los proxies inversos ocultan su existencia de forma predeterminada como medida de seguridad. Por lo tanto, no puede confiar en los servicios de monitoreo de sitios web como W3Techs para encontrar qué proxies inversos son los más populares.
A partir de nuestra investigación y experiencia, los proxies inversos más populares en uso hoy en día son:
Nginx
Nginx es un servidor web de código abierto que también puede servir como proxy inverso. Además de ser utilizado para alojar sitios web, también es una de las soluciones de equilibrio de carga y proxy inverso más utilizadas. Según Netcraft, más de 479 millones de servidores web usaban Nginx en diciembre de 2019, lo que lo convierte en el líder en la cuota de mercado de servidores web.

Nginx proporciona todos los beneficios del proxy inverso discutidos anteriormente, y más. Mejora el rendimiento web, la seguridad, la confiabilidad y la escalabilidad. Puede configurar Nginx usando su archivo de configuración, que también es recargable en caliente. En Kinsta, el proxy inverso de Nginx es uno de varios complementos premium que puede usar.
Pero también puede usar Nginx Plus, una oferta comercial, para obtener acceso a opciones de configuración basadas en API y otras características adecuadas para sitios web de grandes empresas.
Kinsta potencia todos sus sitios web con Nginx. Se ha clasificado en el estado de alojamiento web de nivel superior de Review Signal en cada categoría en la que ha competido. Algunas otras empresas importantes que utilizan Nginx son MaxCDN, Cloudflare y Netflix.
Configurar Nginx como un proxy inverso básico es simple. Nginx también le proporciona varias directivas para personalizar el proxy inverso de su servidor según sus requisitos. Discutiremos cómo hacer esto en una sección posterior. Si es cliente de Kinsta, también aprenderá cómo usar un proxy inverso para sitios web alojados con Kinsta en la misma sección.
Barniz
Varnish es un proxy inverso HTTP de código abierto con un motor de caché integrado. Está diseñado principalmente para sitios web de alto tráfico que ofrecen contenido dinámico. También puede usar Varnish como un balanceador de carga, un firewall de aplicaciones web (WAF) y un servidor de autorización y autenticación perimetral.
Funciona en todas las versiones modernas de Linux y FreeBSD, y se utiliza principalmente como fachada para servidores web Nginx o Apache. El lenguaje de configuración de Varnish (VCL) potente y altamente flexible de Varnish le permite definir varias funciones, como el manejo de solicitudes HTTP, el almacenamiento en caché y la conexión a uno o más servidores web.
Por esta razón, muchas CDN utilizan Varnish como base principal para entregar contenido rápidamente.
Varnish también es compatible con Edge Side Incluye (ESI), un lenguaje que le ayuda a reutilizar secciones de una página web en otras páginas web. Si su sitio web usa mucho contenido repetido en diferentes páginas, ESI puede ayudarlo a acelerar los tiempos de carga de la página de su sitio almacenando en caché las secciones de uso frecuente.
Puede ampliar Varnish con sus diversos módulos (VMOD). Dirígete al tutorial oficial de Varnish para aprender a configurar Varnish como un proxy inverso para WordPress.
Servidor de tráfico Apache
Apache Traffic Server es un servidor proxy de caché de código abierto. Es popular por sus funciones rápidas y escalables. Fue un producto comercial desarrollado por Yahoo! hace mucho tiempo, pero lo hicieron de código abierto y lo donaron a la Fundación Apache para su mantenimiento.
Varias redes de contenido y CDN importantes, como Comcast, Akamai, LinkedIn, Yahoo y Apple, utilizan Apache Traffic Server para potenciar su tecnología.

También puede usar Apache HTTP Server ( Apache httpd ), un demonio de servidor HTTP, para configurar un proxy inverso en su servidor web. Además de actuar como un servidor web básico, también lo ayuda a brindar contenido estático y dinámico a los usuarios. Aprenderá a configurar Apache como proxy inverso más adelante en este artículo.
HAProxy
HAProxy es un proxy inverso de código abierto y un equilibrador de carga. Está diseñado para integrarse con la mayoría de las arquitecturas de servidores web existentes, incluidas las distribuciones de Linux y las plataformas en la nube. Al igual que Nginx, HAProxy utiliza un modelo de E/S basado en eventos y admite la división de solicitudes en varios procesos de trabajo.
Para solicitudes HTTP, HAProxy funciona excepcionalmente bien incluso bajo cargas pesadas. Algunos de los sitios web de mayor tráfico en Internet, como Airbnb, Reddit, Instagram, Stack Overflow, Tumblr, GitHub e Imgur, usan HAProxy para entregar sus sitios web de manera eficiente.
Discutir cómo implementar HAProxy está más allá del alcance de este artículo, pero puede consultar su documentación para comprender cómo funciona.
Nota: Traefik y Envoy son otras dos alternativas de código abierto a HAProxy. Ambos son proxies inversos de alto rendimiento y balanceadores de carga con muchas funciones avanzadas.
Algunos otros proxies inversos populares son AWS Elastic Load Balancer, GLBC, DigitalOcean Load Balancer y Google Cloud Load Balancer. Para obtener una lista exhaustiva de los principales proxies inversos y balanceadores de carga que se usan hoy en día, puede visitar Stackshare.io.
Proxy inverso: casos de uso para sitios de WordPress
Existen principalmente tres casos de uso para emplear un proxy inverso para sitios de WordPress, incluidos los sitios alojados en Kinsta.

Solo usaremos Nginx para este ejemplo, ya que es el proxy inverso más popular que se usa actualmente para los sitios de WordPress. Pero los mismos principios básicos se aplicarán a otros proxies inversos.
Los proxies inversos suelen ser difíciles de instalar, configurar y admitir. Por esta razón, Kinsta ofrece una suscripción complementaria mensual de $50 por cada proxy inverso con el que necesite ayuda para configurar. Puede comunicarse con el equipo de soporte de Kinsta para obtener más detalles.
1. Sitios principales y proxy alojados en el mismo servidor
Si tanto el sitio principal como el sitio proxy están alojados en el mismo servidor, el sitio principal puede ejecutarse en una instalación de WordPress, mientras que una instalación de WordPress separada alimenta el sitio proxy.
Como tendrá acceso tanto a los sitios como a su servidor web compartido, puede configurar las reglas de proxy inverso para el sitio principal y luego configurar el sitio proxy para cargar desde el proxy inverso.
Si está alojando estos dos sitios en Kinsta, puede comunicarse con el equipo de soporte de Kinsta y solicitarles que configuren el proxy inverso para usted. Este es el procedimiento que debe seguir:
- Asegúrese de que tanto el sitio principal como el sitio proxy estén alojados en Kinsta. Si no lo son, puede migrar ambos sitios al entorno de Kinsta, ya sea manualmente o enviando una solicitud de migración.
- Abra un ticket de soporte y proporcione al equipo de soporte de Kinsta una descripción clara de la configuración del dominio. Tardaré aproximadamente un día laborable en configurar el proxy inverso.
- Kinsta configurará las reglas de proxy inverso relevantes en el sitio principal y configurará el sitio proxy para cargar sobre el proxy inverso.
Estas son las directivas estándar de proxy inverso de Nginx utilizadas por Kinsta para cargar un sitio de subdirectorio a través de un proxy inverso:
location ^~ /subfolder/ { proxy_pass http://subfolder.domain.com; 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; }
En el código anterior, debe reemplazar el marcador de posición /subfolder/
con el nombre real del subdirectorio (por ejemplo, /blog/
, /shop/
). Además, el subdominio http://subfolder.domain.com
debe coincidir con la URL utilizada para apuntar el proxy inverso hacia el sitio proxy.
La directiva de location
incluye símbolos de intercalación y tilde ( ^~ ) para decirle a Nginx que si encuentra la cadena definida, debe dejar de buscar más coincidencias y usar las directivas que se enumeran aquí. Obtenga más información sobre las directivas de proxy inverso de Nginx en su documentación.
A continuación, debe configurar el sitio con proxy para que se cargue a través del proxy inverso. Estos son los pasos estándar seguidos por Kinsta para configurar el sitio proxy:
- Cree un subdirectorio en la ruta desde donde se carga el sitio proxy. Todos los archivos del sitio web con proxy se mueven a este subdirectorio.
- Actualice los archivos de configuración del servidor web para definir el nuevo subdirectorio como directorio raíz para el sitio proxy. Además, debe agregar una regla de reescritura para eliminar el subdirectorio del URI de solicitud para cada solicitud entrante.
- Actualice todas las URL en la base de datos del sitio proxy para que coincidan con las URL del sitio en vivo (por ejemplo,
example.com/blog
). - Edite el archivo
wp-config.php
del sitio proxy con la definición$_SERVER['HTTP_HOST']
, apuntándolo a la URL del sitio principal. - Si está utilizando un certificado SSL, debe definir reglas estrictas en el archivo
wp-config.php
para evitar bucles de redirección.
Nota: un sitio con proxy no puede crear direcciones URL que dupliquen el mismo subdirectorio en el que se carga el sitio con proxy. Por ejemplo, un sitio proxy en example.com/blog
no puede crear una página o directorio en example.com/blog/blog
.
2. Solo el sitio proxy alojado en su servidor
Si solo tiene acceso al sitio proxy y su servidor web, debe comunicarse con el administrador del servidor del sitio principal y pedirle que configure las reglas de proxy inverso para usted.
¿Necesita un alojamiento ultrarrápido, seguro y fácil de usar para sus sitios? Kinsta está diseñado pensando en los desarrolladores de WordPress y proporciona muchas herramientas y un panel de control poderoso. Consulta nuestros planes
Para hacerlo, debe seguir los mismos pasos descritos anteriormente, excepto que en este caso debe configurar las reglas en dos servidores diferentes.
Para alojar su sitio proxy con Kinsta, agregue un dominio al sitio que apuntará al proxy inverso. Por lo general, el subdominio se adapta a este propósito (p. ej. blog.example.com
) para cargar el sitio proxy a través de un enlace de subdirectorio (p. ej., example.com/blog
).
Después de configurar su sitio proxy en Kinsta, puede comunicarse con el equipo de soporte de Kinsta para configurar el sitio proxy para que se cargue a través de un proxy inverso. En este momento, nuestro equipo de soporte requerirá la IP real de su servidor para completar el proceso de configuración de manera que cuente las visitas correctamente. Si no puede proporcionar una IP estática debido a restricciones de IP dinámicas de ciertos proveedores (p. ej., AWS CloudFront), su plan se convertirá en un plan comparable basado en el ancho de banda.
Por último, configurar el proxy inverso en su servidor queda fuera del alcance del soporte de Kinsta, ya que solo el administrador del servidor puede encargarse de ello.
3. Solo el sitio principal alojado en su servidor
Si solo tiene acceso al sitio principal y su servidor web, debe configurar el proxy inverso y configurar sus reglas para cargar el sitio proxy desde un host externo. La instalación y configuración del sitio proxy para cargar el proxy inverso es responsabilidad del administrador del servidor secundario.
Tener su sitio principal alojado en Kinsta le otorgará acceso al equipo de soporte de Kinsta. Puede generar un ticket de soporte con ellos para agregar las reglas de proxy inverso estándar enumeradas anteriormente en este artículo. También puede agregar personalizaciones adicionales a esas reglas si es necesario.
En este escenario, usted es totalmente responsable de configurar el sitio con proxy para cargarlo correctamente en el proxy inverso.
Cómo configurar Nginx como proxy inverso
Si Kinsta no aloja su sitio web y usted administra sus servidores, debe configurar el proxy inverso usted mismo y configurarlo para que apunte hacia el sitio proxy.
Dependiendo del sistema operativo de su servidor web, puede instalar Nginx de manera diferente. Para las distribuciones de Linux, puede usar varios paquetes de Nginx según la versión de su distribución de Linux.
En el siguiente ejemplo, instalamos el sitio principal en el nombre de dominio example.com
, mientras que el sitio de WordPress con proxy está instalado en el subdominio blog.domain.com
. Ambos funcionan con Apache en un servidor web que se ejecuta en Ubuntu 18.04. Instalaremos y configuraremos Nginx como proxy inverso en el servidor principal.
Para comenzar, acceda a la terminal de su servidor a través de SSH. Luego use el comando apt-get
para actualizar la lista de paquetes de su distribución e instale Nginx en su servidor web.
sudo apt update sudo apt install nginx
A continuación, debe configurar Nginx para las solicitudes de proxy para dominios alojados en Apache. Para ello, cree un nuevo archivo de host virtual. Aquí, estoy usando el editor nano para agregar el código, pero puede usar cualquier editor de código de su elección.
sudo nano /etc/nginx/sites-available/example.com.conf
Luego configure las directivas de Nginx para reenviar solicitudes a Apache agregando el siguiente server {...}
y bloques de location
:
server { listen 80; server_name example.com www.example.com; index index.php; root /var/www/example.com/public # fallback for index.php location / { try_files $uri $uri/ /index.php?$query_string; }location /blog { proxy_pass http://blog.domain.com;proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; # Proxy headers 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 timeouts proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; }
En el código anterior, estoy definiendo un enlace de subdirectorio example.com/blog
que será atendido por el servidor Apache. Asegúrese de utilizar la dirección IP pública (o URL) de su sitio web proxy en la directiva proxy_pass
. En mi caso, mi sitio web proxy está alojado en el subdominio blog.domain.com
.
Nota: Asegúrese de que el sitio web con proxy esté instalado y listo para funcionar antes de realizar cualquier cambio.
Puede obtener más información sobre todas las directivas de proxy inverso utilizadas aquí en el índice detallado de directivas de Nginx.
Guarde el archivo de host virtual. A continuación, active el nuevo host virtual creando un enlace simbólico para los archivos denominados example.com.conf
en los directorios /etc/nginx/sites-available
y /etc/nginx/sites-enabled
.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
Después de eso, pruebe Nginx en busca de errores de configuración.
sudo nginx -t
Si no hay errores, vuelva a cargar Nginx para aplicar los cambios.
sudo systemctl reload nginx
Ha configurado correctamente Nginx para que funcione como un proxy inverso ahora. Para confirmar esto, puede usar la función phpinfo() para verificar las variables de PHP cargadas cuando visita su sitio proxy.
En las variables PHP SERVER_SOFTWARE
y DOCUMENT_ROOT
, verá que Apache sirve este dominio en el backend. Pero HTTP_X_REAL_IP
y HTTP_X_FORWARDED_FOR
PHP confirman que se utilizó Nginx como proxy inverso para reenviar las solicitudes.
Puede acelerar el servicio de su sitio de WordPress a través de Nginx utilizando los módulos fastcgi_cache y ngx_cache_purge. Mientras que el primer módulo almacenará en caché su sitio, el segundo módulo purgará automáticamente el caché en función de eventos específicos (por ejemplo, publicar o editar una publicación/página de WordPress).
Puede usar el complemento de WordPress Nginx Cache Controller para controlar el caché del servidor proxy de Nginx directamente desde su panel de administración de WordPress. Si está utilizando una instalación multisitio de WordPress, puede usar el complemento Nginx Helper para hacer lo mismo.
Consulte la documentación principal de Nginx y la guía de configuración de Nginx WordPress para obtener una descripción detallada de cómo trabajar con Nginx y WordPress.
Cómo configurar Apache como un proxy inverso
Antes de comenzar, asegúrese de tener dos sitios web en funcionamiento en example.com
y blog.domain.com
. El primer sitio web puede o no ser un sitio de WordPress, pero el segundo debe ser un sitio de WordPress, ya que se usa principalmente para cargar el blog del dominio raíz en el enlace del subdirectorio example.com/blog
.
Comience a configurar Apache abriendo la terminal de su servidor a través de SSH y habilitando el módulo proxy de Apache.
sudo a2enmod proxy proxy_http ssl
Ejecutar el comando anterior probablemente reiniciará Apache para recargar las directivas recién definidas.
A continuación, edite el archivo de hosts virtuales de su servidor principal para crear un proxy inverso. Aquí está el código que necesita agregar:
<VirtualHost *> DocumentRoot /var/www/app/public SSLProxyEngine On ProxyRequests off ProxyPass /blog http://blog.domain.com ProxyPassReverse /blog http://blog.domain.com </VirtualHost>
La directiva ProxyPass creará un proxy inverso para las rutas especificadas, mientras que la directiva ProxyPassReverse interceptará los encabezados de respuesta HTTP enviados a través de este proxy inverso y los reescribirá para que coincidan con el servidor Apache.
Después de guardar el archivo, debe editar su archivo wp-config.php
agregando el siguiente código justo antes de la línea que le pide que deje de editar.
# ProxyPass Settings # overrides the variables below to ensure that any # request to /blog/* subdirectory is taken care of properly $_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI']; $_SERVER['SCRIPT_NAME'] = '/blog' . $_SERVER['SCRIPT_NAME']; $_SERVER['PHP_SELF'] = '/blog' . $_SERVER['PHP_SELF'];
Finalmente, debe actualizar la base de datos de su sitio de WordPress para agregar los valores de configuración para el enlace del subdirectorio /blog
. Puede hacerlo ejecutando la siguiente consulta SQL:
UPDATE wp_options SET option_value = 'https://www.example.com/blog' WHERE option_name IN( 'siteurl', 'home' );
Ahora debería poder visitar la URL https://www.example.com/blog
y tener su sitio de WordPress alojado en la carga del subdominio http://blog.domain.com
sin cambiar su URL. Puede continuar usando WordPress como de costumbre para navegar, escribir, editar y administrar su sitio.
Limitaciones de un proxy inverso
- Un proxy inverso plantea un riesgo de seguridad significativo, ya que puede leer y cambiar todo el tráfico que pasa por él. Si está pasando tráfico HTTPS a través del proxy inverso, entonces necesita descifrar y volver a cifrar los datos que pasan. Esto significa que debe poseer las claves privadas del certificado SSL/TLS. Por lo tanto, si cualquier parte malintencionada puede comprometer su proxy inverso, puede registrar contraseñas e inyectar malware en sus sitios web.
- Si usted o sus usuarios no pueden acceder a su servidor principal directamente, el uso de un proxy inverso puede conducir a un único punto de falla. Por ejemplo, si está utilizando un proxy inverso como fachada para atender varios dominios, su interrupción puede hacer que todos los dominios se desconecten simultáneamente.
- Si confía en un proxy inverso de terceros (por ejemplo, Cloudflare), entonces les está entregando la información confidencial de su sitio. Si bien son confiables, no puede predecir a qué puede conducir.
- La restauración de copias de seguridad o el envío de sitios provisionales en vivo en sitios web que se cargan a través de un proxy inverso puede hacer que el sitio proxy deje de cargarse correctamente.
Elegir entre un CDN y un proxy inverso
Los CDN son una forma avanzada de proxy inverso con la mayor parte de la configuración y el mantenimiento a cargo de un tercero. Pueden proporcionar increíbles beneficios de rendimiento a su sitio de WordPress con un esfuerzo menor de su parte.
Las CDN no solo almacenan en caché el contenido y lo entregan rápidamente a los usuarios, sino que también reducen la carga en sus servidores de origen, reducen los costos de ancho de banda, brindan una capa adicional de seguridad, mejoran el SEO de su sitio y lo ayudan a escalar mejor su sitio web.
Notará que la mayoría de los beneficios proporcionados por los CDN son los mismos que los proporcionados por los servidores proxy inversos. Entonces, ¿debería elegir una CDN en lugar de un proxy inverso o viceversa?
No hay razón por la que debas conformarte con solo uno. Si ya tiene instalado un proxy inverso, aún verá mejoras en la velocidad y el rendimiento al usar una CDN. Ambos cachés se superponen bien, y si tiene necesidades únicas de manejo de solicitudes (por ejemplo, contenido dinámico, comercio electrónico), puede configurarlo fácilmente con algunos encabezados personalizados transmitidos por la CDN o el proxy inverso.
Resumen
WordPress es muy flexible. Puede usarlo como un blog, un sitio de comercio electrónico o incluso un sistema de gestión de aprendizaje. En la mayoría de los casos, puede personalizar WordPress para que se adapte a sus requisitos únicos.
Sin embargo, a veces puede que tenga que usar un dominio separado o un servidor secundario para alojar un sitio adicional. Como se discutió anteriormente, puede deberse al uso de diferentes pilas de tecnología para un sitio de una gran empresa o al lanzamiento de un blog de WordPress para un sitio preexistente que no es de WordPress.
Un proxy inverso puede ayudar en ambos casos, ayudándote a sacar el máximo provecho de WordPress sin abandonar el sitio web principal y empezar de nuevo.