Cómo Nginx configura proxies de reenvío al mismo tiempo
Hace unos días, un amiguito me hizo una pregunta: "Hierro viejo, escuché que Nginx puede configurar forward proxy al mismo tiempo, ¿es cierto? ¿Cómo configurarlo?" Para ser honesto, esta es una pregunta bastante buena, y Nginx, como un servidor web de alto rendimiento y servidor proxy inverso, de hecho puede hacer esto. ¡Así que, déjame llevarte en un viaje para explorar cómo Nginx puede configurar proxies hacia adelante al mismo tiempo!
Diferencia entre proxy directo e inverso
Antes de sumergirnos en la explicación de cómo Nginx puede configurar proxies de reenvío al mismo tiempo, primero vamos a averiguar la diferencia entre proxies de reenvío y proxies inversos. Como su nombre indica, un proxy directo reenvía las peticiones a través de un servidor proxy para que el cliente no pueda acceder directamente al servidor de destino, mientras que un proxy inverso retransmite las peticiones a través de un servidor proxy para reenviar la petición del cliente al servidor de destino. En pocas palabras, un proxy directo envía solicitudes en lugar del cliente, mientras que un proxy inverso recibe solicitudes en lugar del servidor.
Cómo implementa Nginx el proxy de reenvío
Ahora que entendemos la diferencia entre proxy directo e inverso, podemos pasar a entender cómo Nginx implementa el proxy directo. A continuación, voy a combinar el código real para explicarlo paso a paso para usted.
En primer lugar, debemos asegurarnos de que Nginx está instalado. A continuación, añada la siguiente configuración al archivo de configuración de Nginx (normalmente nginx.conf):
http {
servidor {
listen 80.
location / {
proxy_pass http://目标服务器的IP地址;
}
}
}
En la configuración anterior, hemos utilizado la directiva proxy_pass de Nginx para el proxy de reenvío. Cuando una solicitud de un cliente llega al servidor Nginx, Nginx reenviará la solicitud al servidor de destino basándose en la directiva proxy_pass de la configuración. De esta forma, se implementa el proxy de reenvío.
Configuración de múltiples proxies de reenvío
Tal vez algunos de ustedes se preguntarán, la configuración anterior sólo puede lograr un proxy de reenvío, así que ¿qué pasa si quiero configurar múltiples proxies de reenvío al mismo tiempo? Nginx proporciona una manera muy conveniente para satisfacer nuestras necesidades.
A continuación, utilizaré el ejemplo de configuración de dos proxies de reenvío:
http {
servidor {
listen 80.
location /proxy1 {
proxy_pass http://目标服务器1的IP地址;
}
ubicación /proxy2 {
proxy_pass http://目标服务器2的IP地址; }
}
}
}
En la configuración anterior, hemos utilizado diferentes bloques de ubicación para múltiples proxies de reenvío. Sólo tienes que configurar diferentes directivas proxy_pass en diferentes bloques de ubicación. Cuando la ruta URL de una solicitud de cliente coincide con el bloque de ubicación correspondiente, Nginx reenviará la solicitud al servidor de destino apropiado.
Aplicaciones de equilibrio de carga y almacenamiento en caché
Además de la funcionalidad básica de proxy de reenvío, Nginx también proporciona aplicaciones de equilibrio de carga y almacenamiento en caché para hacer que nuestro servidor proxy sea más potente y estable.
En primer lugar, vamos a explicar la aplicación de equilibrio de carga. nginx proporciona varias estrategias de equilibrio de carga, como el sondeo, IP hashing, menos conectado, etc. Sólo tenemos que añadir el nodo de servicio en la sección de aguas arriba del archivo de configuración. Sólo tenemos que añadir el nodo de servicio en la sección upstream del archivo de configuración. He aquí un ejemplo:
http {
backend upstream {
dirección IP del servidor de destino 1.
dirección IP del servidor de destino 2.
}
servidor {
listen 80.
location / {
proxy_pass http://backend;
}
}
}
En la configuración anterior, hemos utilizado la directiva upstream para definir múltiples nodos de servicio y reenviar las peticiones a estos nodos de servicio para el balanceo de carga a través de la directiva proxy_pass. De este modo, tanto el servidor de destino 1 como el servidor de destino 2 pueden gestionar las peticiones de los clientes de acuerdo con la política de equilibrio de carga establecida.
Además, Nginx también admite el almacenamiento en caché, que permite almacenar en caché los resultados de respuesta de determinadas solicitudes para mejorar la velocidad de acceso y reducir la carga del servidor. Sólo tenemos que añadir la directiva proxy_cache al bloque de ubicación en el archivo de configuración. He aquí un ejemplo:
http {
servidor {
listen 80.
location / {
proxy_pass http://目标服务器的IP地址;
proxy_cache my_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid
proxy_cache_valid 200 302 10m;
}
}
}
En la configuración anterior, hemos definido un área de caché usando la directiva proxy_cache y hemos establecido el tiempo de validez de la caché usando la directiva proxy_cache_valid. Cuando una solicitud de cliente llega a Nginx, si la respuesta correspondiente existe en la caché, el contenido almacenado en caché se devuelve directamente, de lo contrario la solicitud se reenvía al servidor de destino.
resúmenes
A través de la explicación de este artículo, creo que usted tiene una cierta comprensión de cómo configurar un proxy hacia adelante para Nginx al mismo tiempo. La diferencia entre proxies hacia adelante y hacia atrás, la configuración básica de Nginx para lograr proxies hacia adelante, la configuración de múltiples proxies hacia adelante, así como la aplicación de balanceo de carga y almacenamiento en caché, estos son los contenidos que necesitamos dominar en la aplicación real. Espero que este artículo pueda ayudarte. Si hay alguna pregunta, bienvenido a dejar un mensaje para discutir. ¡Juntos podemos progresar y crecer juntos!