Nginx, ¡el famoso Nginx! Es un potente software de código abierto, orgullosamente conocido por su alto rendimiento y estabilidad. Puede hacer un montón de cosas como el equilibrio de carga Nginx y también se puede utilizar en conjunción con proxies de reenvío para hacer su mundo en línea más accesible.
I. Equilibrio de carga de Nginx
Hay que decir que el equilibrio de carga es un quebradero de cabeza para muchos ingenieros informáticos. Supongamos que tenemos un servidor que está demasiado ocupado para hacer frente a la enorme cantidad de visitas de la web, entonces ¿qué hacer? surgió el equilibrio de carga Nginx, que actúa como un árbitro mágico que puede distribuir uniformemente las peticiones de los usuarios a diferentes servidores, reduciendo así la presión de carga en un solo servidor.
Existen varios módulos de equilibrio de carga para Nginx, el más utilizado de los cuales es el algoritmo ip_hash. Este algoritmo asigna peticiones a servidores back-end basándose en la dirección IP del usuario. Este enfoque garantiza que las peticiones de un mismo usuario se envíen al mismo servidor, lo que resulta útil en muchos escenarios de aplicación, como los juegos en línea o los sitios de compras.
II. Agencia positiva
A continuación, hablemos de los proxies directos. Proxy directo, a diferencia de proxy inverso, significa que el servidor proxy se encuentra entre el cliente y el servidor de destino, y el cliente envía una solicitud al servidor de destino a través del servidor proxy, a fin de lograr el propósito de ocultar la dirección IP del cliente real y así sucesivamente. Este concepto es muy útil para algunos escenarios que requieren acceso proxy, como la navegación por Internet o el acceso a sitios web multinacionales.
Cuando usamos Nginx como proxy directo, necesitamos configurar los parámetros relacionados con el proxy inverso. En primer lugar, tenemos que añadir la siguiente configuración en el módulo http:
http {
...
proxy_pass http://your_target_server; proxy_set_header Host $host; proxy_set_header
proxy_set_header Host $host.
...
}
De esta forma, cuando un usuario envíe una petición, Nginx hará de proxy y la reenviará al servidor de destino. Además, podemos establecer alguna información de cabecera HTTP que se pasará al servidor de destino, como Host, con la directiva proxy_set_header.
III. Uso combinado
Ahora que sabemos un poco sobre el equilibrio de carga de Nginx y el proxy de reenvío, vamos a hablar de cómo utilizarlos juntos. En primer lugar, tenemos que añadir la siguiente configuración a nuestro archivo de configuración Nginx.conf:
http {
...
backend upstream {
servidor backend1.ejemplo.com; servidor backend2.ejemplo.com; servidor backend2.ejemplo.com; servidor backend2.ejemplo.com
servidor backend2.ejemplo.com; servidor backend3.ejemplo.com; servidor backend4.ejemplo.com; servidor backend5.ejemplo.com
backend upstream { servidor backend1.ejemplo.com; servidor backend2.ejemplo.com; servidor backend3.ejemplo.com; ...
...
}
...
servidor {
...
location / {
proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header
proxy_set_header Host $host.
}
...
}
...
}
En esta configuración, definimos un cluster de servidores llamado backend. En el cluster, podemos añadir múltiples servidores backend, que pueden ser iguales o diferentes. De esta manera, cuando un usuario envía una solicitud, Nginx distribuirá la solicitud a los servidores backend de una manera equilibrada de carga.
Al mismo tiempo, establecemos los parámetros relacionados con el proxy de reenvío en la sección location del bloque de servidor, especificando la dirección del servidor back-end al que se reenvía la petición y pasando las cabeceras HTTP. De esta forma, Nginx implementa tanto el balanceo de carga como el reenvío proxy.