¿Qué es un proxy inverso?
Un servidor proxy estándar funciona en nombre de los clientes, a menudo proporcionando privacidad o filtrando contenido. Un proxy inverso funciona en nombre de un servidor, interceptando el tráfico y enrutándolo a un servidor separado.
Hay varias razones por las que podría querer instalar un proxy inverso. Una de las principales razones es la privacidad.
Si tiene varios servidores, un proxy inverso puede ayudar a equilibrar las cargas entre los servidores y mejorar el rendimiento. Como un proxy inverso proporciona un único punto de contacto para los clientes, puede centralizar el registro y la generación de informes en varios servidores.
Nginx puede mejorar el rendimiento sirviendo contenido estático rápidamente y pasando solicitudes de contenido dinámico a los servidores Apache.
Esta guía lo ayudará a instalar y configurar un proxy inverso Nginx en su sistema.
Requisitos previos
- Un servidor Linux con Apache, PHP y un cortafuegos
- Acceso a un usuario root con sudo acceder
- Línea de comandos o terminal de Linux (Ctrl –
Alternativo –T para Ubuntu, Alt –F2 para CentOS) - Administrador de paquetes (como APT)
Configuración de un proxy inverso Nginx
Paso 1:Instale Nginx desde repositorios predeterminados
Abra una ventana de terminal e ingrese lo siguiente:
sudo apt-get update
Permita que el administrador de paquetes termine de actualizar las listas de software, luego ingrese lo siguiente:
sudo apt-get install nginx
Permita que el proceso se complete.
Paso 2 (opcional):instalar Nginx desde el repositorio oficial
Añadir clave de seguridad
En una ventana de terminal, ingresa lo siguiente:
sudo wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
Esto descarga la clave de firma para Nginx, que verifica que está descargando software auténtico.
Abrir sources.list Archivo para editar
En la terminal, ingresa lo siguiente:
sudo vi /etc/apt/sources.list
Añadir fuentes de Nginx a la lista de repositorios
Ingrese las siguientes líneas en el /etc/apt/sources.list
archivo que acaba de abrir:
deb https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
deb-src https://nginx.org/packages/mainline/debian/ <CODENAME> nginx
Reemplazar <CODENAME>
con el nombre en clave de su distribución de Debian.
Guardar el archivo y salir .
Instalar la última versión de Nginx
Para instalar la última versión de Nginx, use los comandos:
sudo apt-get remove nginx-common
sudo apt-get update
sudo apt-get install nginx
Paso 3:Inicie Nginx y configúrelo para que se inicie al reiniciar
Para iniciar Nginx:
sudo systemctl start nginx
Para habilitar Nginx:
sudo systemctl enable nginx
Para comprobar que Nginx se está ejecutando:
sudo systemctl status nginx
El resultado debería mostrarle que el servicio está activo (en ejecución) , como en la imagen de abajo:
Paso 4:Desvincular archivo de configuración predeterminado
En la terminal, ingresa lo siguiente:
sudo unlink /etc/nginx/sites-enabled/default
Paso 5:Crear un nuevo archivo de configuración
Para crear un nuevo archivo de configuración, ingrese:
cd /etc/nginx/sites-available/
sudo vi custom_server.conf
Reemplazar custom_server
con un nombre que sea significativo para ti. En el nuevo archivo, ingrese:
server {
listen 80;
location / {
proxy_pass http://my_server;
}
}
Este es un ejemplo de proxy inverso de Nginx muy básico. Nginx está configurado para escuchar todo el tráfico en el puerto 80 para todo el tráfico.
El proxy_pass
El comando dirige todo el tráfico en el puerto 80 a http://my_server
. Simplemente cambie http://my_server
a la ubicación de su elección, y Nginx interceptará las solicitudes de los clientes y las enrutará a la ubicación que especifique. Una vez que haya terminado, guarde el archivo y salga.
Paso 6:vincular y activar el archivo de configuración
Para activar el nuevo archivo Nginx, ingrese:
ln -s /etc/nginx/sites-available/custom_server.conf
/etc/nginx/sites-enabled/custom_server.conf
Como de costumbre, reemplace custom_server
con el nombre del archivo de configuración que creó en el Paso 5.
Paso 7:Pruebe y reinicie Nginx
Para probar Nginx:
sudo service nginx configtest
Para reiniciar Nginx:
sudo service nginx restart
Opciones de configuración opcionales de Nginx
Búferes proxy
De forma predeterminada, Nginx almacena en búfer el tráfico de los servidores a los que representa. Los búferes mejoran el rendimiento del servidor ya que no se envía una respuesta del servidor hasta que el cliente termina de enviar una respuesta completa.
Para desactivar el búfer, abra el archivo de configuración del Paso 5. En ubicación/sección , agregue lo siguiente:
proxy_buffering off;
Encabezados de solicitud
Los encabezados proporcionan información al servidor sobre las solicitudes realizadas o sobre el cliente.
Nginx redefine dos de los campos de encabezado:host
está configurado para $proxy_host
y connection
está configurado para close
. Si usa esos encabezados, asegúrese de cambiar el comportamiento en el archivo de configuración.
Si alguna cadena de encabezado está vacía, Nginx simplemente elimina esos campos.
Para cambiar la forma en que Nginx maneja los brezos, use los siguientes comandos en su archivo de configuración:
location / {
proxy_set_header Host $host;
}
Este ejemplo le dice a Nginx que configure host
al $host
variables.
Para evitar que un campo de encabezado se pase al servidor proxy, use una cadena vacía de la siguiente manera:
location / {
proxy_set_header header-variable "";
}
Equilibrio de carga
Puede utilizar el archivo de configuración para enrutar el tráfico a varios servidores. Para usar esta configuración, su archivo de configuración se verá similar a este ejemplo:
http {
server {
proxy_pass http://my_server
}
}
En otras palabras, la configuración de HTTP sale de la configuración del servidor del Paso 5.
Para crear un nombre para un grupo de servidores, use el upstream
comando:
http {
upstream server_group {
server my.server1.com weight=3;
server my.server2.com;
}
server {
location / {
proxy_pass http://server_group;
}
}
}
Esta designación requiere dos servidores:my.server1.com
y my.server2.com
– y los agrupa. Nginx representa ese grupo de servidores con el nombre http://server_group
. Puedes cambiarles el nombre que quieras.
Este ejemplo usa el weight
comando para enrutar tres solicitudes a my.server1.com
, luego 1 solicitud a my.server2.com
. Esta es una opción para equilibrar manualmente la carga de clientes entre servidores. Otro método es simplemente omitir cualquier designación, en la que Nginx distribuirá las solicitudes de manera uniforme entre los servidores enumerados.