Configuración de un proxy inverso
16:51, 28.11.2022
Un servidor proxy inverso es un tipo de servidor proxy que transmite las peticiones de los clientes de una red externa a uno o varios servidores situados en la red interna. En el siguiente artículo se explicará para qué sirve y cómo configurarlo en caso de ser necesario utilizando como ejemplo el servidor web Nginx.
Por qué es necesario un proxy inverso
Puede haber varios escenarios para el uso de la tecnología. Veamos las principales:
- Ocultación de la existencia de los servidores consultados, así como de sus características.
- Protección DoS y DDoS - los administradores del sistema instalan un firewall de software junto con el proxy inverso para este propósito.
- Como muleta - si el sitio principal no soporta la conexión vía SSL (https://www.hostzealot.com/ssl ), puede conectar el proxy inverso con un acelerador SSL de hardware.
- Uso como equilibrador de carga: un servidor de este tipo puede proporcionar un equilibrio de carga entre dos, tres o más servidores.
- Reducción de la carga del servidor primario colocando contenidos dinámicos y estáticos en el proxy inverso. Este método suele denominarse aceleración.
- Compresión de datos para reducir el tiempo de carga.
- Puede utilizarse para realizar pruebas A/B de forma segura y cómoda.
Ahora ya sabe para qué sirve el proxy inverso. Pasemos a la práctica.
Uso de Nginx como servidor proxy inverso
Lo primero que hay que hacer es abrir el archivo de configuración del bloque de servidores de dominio. En él, debe especificar la ubicación y el servidor proxy:
server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:7070; } }
La URL del servidor a proxiar se establece con la directiva proxy_pass. Esto permite el uso de HTTP o HTTPS:
- como un protocolo;
- dominio;
- Dirección IP;
- puerto opcional;
- identificador de recursos unificado como dirección.
La configuración anterior indica a Nginx que reenvíe todas las peticiones de /app al servidor proxy en http://127.0.0.1:7070. Puede cambiarlo por la IP que desee. Esto se proporciona sólo como referencia.
Los archivos de bloqueo del servidor se almacenan en /etc/nginx/sites-available - si utiliza Ubuntu o Debian y en /etc/nginx/conf.d si utiliza CentOS.
Para ilustrar cómo funciona la ubicación y la directiva proxy_pass, veamos un ejemplo sencillo:
server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:6000/wordpress/; } }
Cuando un usuario visita http://example.com/blog/my-post, el servidor web Nginx envía la solicitud a http://node1.com:6000/wordpress/my-post.
Si la dirección del servidor proxy contiene un identificador uniforme de recursos, ( /wordpress/ ), la URI de la petición traducida al servidor proxy se sustituye por la URI especificada en la directiva. En el caso de que se especifique la dirección del servidor proxy sin un identificador de recurso unificado, se pasa al servidor proxy la URI completa de la solicitud.
Cómo configurar Nginx como proxy inverso para un proxy que no sea HTTP
Para ello se utiliza una de las cuatro directivas:
- fastcgi_pass - proxy inverso al servidor FastCGI.
- uwsgi_pass - proxy inverso al servidor uwsgi.
- scgi_pass - proxy inverso al servidor SCGI.
- memcached_pass - proxy inverso al servidor Memcached.
Por ejemplo, muy a menudo Nginx se utiliza como un proxy inverso PHP-FPM:
server { # ... other directives location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }
Cuando cambie el archivo de configuración, asegúrese de reiniciar el servidor web Nginx para que los cambios surtan efecto. Si tiene alguna pregunta, póngase en contacto con nuestros especialistas a través del chat en vivo.