Recientemente, me encontré con un problema al utilizar el servicio de proxy inverso nginx, es decir, quiero especificar la dirección IP de origen para lograr el reenvío de las solicitudes, pero no he encontrado una solución mejor. Después de un poco de exploración y práctica, he resumido algunas experiencias y consejos que espero compartir con ustedes.
Con el fin de lograr el propósito de especificar la dirección IP de origen, primero tenemos que entender lo que nginx proxy inverso y la dirección IP de origen son. nginx proxy inverso se refiere a la recepción de solicitudes en Internet a través de un servidor proxy, y luego reenviar estas solicitudes a un servidor en la red interna y retransmitir el contenido devuelto desde el servidor al cliente de la solicitud de Internet. La dirección IP de origen es la dirección IP real del cliente que realiza la solicitud.
Configurar el proxy inverso nginx para especificar una dirección IP requiere las siguientes consideraciones:
Cómo obtener la dirección IP real del cliente
Configuración del proxy inverso nginx
Especificar el reenvío de la dirección IP de origen
Obtener la dirección IP real del cliente
En el proxy inverso nginx, la presencia del servidor proxy hará que la dirección IP de la solicitud original se oculte, por lo que necesitamos obtener la dirección IP real del cliente a través de algunos campos de encabezado especiales. En la configuración de nginx, podemos pasar la dirección IP real del cliente al servidor back-end estableciendo algunos campos de encabezado de solicitud http. La configuración específica es la siguiente:
"`nginx
servidor {
Escucha 80.
nombre_servidor ejemplo.com.
ubicación / {
proxy_pass http://backend_server.
proxy_set_header X-Real-IP $remote_addr.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
“`
En la configuración anterior, establecemos dos campos de cabecera http, X-Real-IP y X-Forwarded-For, mediante la directiva proxy_set_header para pasar la dirección IP real del cliente y la dirección IP del servidor proxy, respectivamente.
Configuración del proxy inverso nginx
Configurar el proxy inverso de nginx es muy sencillo, basta con añadir una directiva proxy_pass al archivo de configuración de nginx. He aquí un ejemplo sencillo:
"`nginx
servidor {
Escucha 80.
nombre_servidor ejemplo.com.
ubicación / {
proxy_pass http://backend_server.
}
}
“`
En la configuración anterior, reenviamos la solicitud del cliente para example.com al backend_server a través de un proxy inverso.
Especificar el reenvío de la dirección IP de origen
Para implementar el reenvío con una dirección IP de origen especificada, podemos utilizar el módulo ngx_http_realip_module de nginx para modificar la dirección IP de origen de la petición. La configuración específica es la siguiente:
"`nginx
set_real_ip_from 192.168.1.0/24.
real_ip_header X-Real-IP.
real_ip_recursive on;
“`
En la configuración anterior, especificamos el segmento de red en el que se permite modificar la dirección IP de origen mediante la directiva set_real_ip_from y, a continuación, especificamos el campo de cabecera HTTP de la dirección IP de origen que se va a modificar mediante la directiva real_ip_header. Finalmente, la directiva real_ip_recursive se utiliza para habilitar la búsqueda recursiva de peticiones desde el servidor proxy para asegurar que la dirección IP real del cliente se obtiene correctamente.
resúmenes
Con la configuración y los ajustes anteriores, podemos lograr el reenvío de la dirección IP de origen especificada en el proxy inverso nginx. En primer lugar, obtenemos la dirección IP real del cliente mediante la configuración del campo de cabecera http, a continuación, configuramos el proxy inverso y utilizamos el módulo ngx_http_realip_module para lograr el reenvío de la dirección IP de origen especificada. Espero que la experiencia y los consejos anteriores le sean útiles.