Te contaré un pequeño secreto, y es que puedes obtener la dirección IP real a través del proxy inverso Nginx. Tal vez usted está pensando, ¿por qué a través de proxy inverso? Deja que te desvele este misterio.
1. El atractivo del proxy inverso Nginx
En primer lugar, vamos a entender lo que es un proxy inverso. El proxy inverso es un patrón arquitectónico en el que el cliente no se conecta directamente al servidor de destino, sino que reenvía las peticiones a través de un intermediario (servidor Nginx). Este enfoque no sólo mejora la seguridad del sitio web, sino que también reduce la carga en el servidor de destino.
Además, es posible ocultar la dirección IP real del servidor a través del proxy inverso Nginx. ¿Lo sabías? ¡Esto también aumentará la seguridad de su red! Imagínese, si los atacantes no pueden obtener su dirección IP real, entonces no pueden atacar a su servidor directamente, y proteger su sitio web de daños en momentos críticos.
2. Configurar el proxy inverso Nginx
Bueno, ¡seguro que estás deseando saber cómo configurar el proxy inverso de Nginx! No te preocupes, Te voy a mostrar a mano.
En primer lugar, es necesario instalar Nginx primero. el proceso de instalación no se detallará, hay muchos tutoriales en línea. Una vez finalizada la instalación, tenemos que modificar el archivo de configuración de Nginx.
Abra el archivo de configuración de Nginx (normalmente nginx.conf) y añada la siguiente configuración al bloque http:
servidor {
listen 80; nombre_servidor tu_dominio.com; nombre_servidor tu_dominio.com
nombre_servidor tu_dominio.com; nombre_servidor { listen 80; nombre_servidor tu_dominio.com; nombre_servidor tu_dominio.com
servidor { listen 80; nombre_servidor su_dominio.com; ubicación / {
proxy_pass http://your_backend_server; proxy_set_header Host $host; ubicación / {
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_addr
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Vamos a explicar la configuración anterior. Primero especificamos que el puerto en el que escucha Nginx es 80 y establecemos el nombre de dominio del servidor en tu_dominio.com (recuerda sustituirlo por tu propio nombre de dominio).
A continuación, se configura el bloque de ubicación, que indica que la solicitud coincidente será proxyada a tu_servidor_backend, un servidor backend. Por supuesto, también es necesario sustituir your_backend_server por la dirección de tu propio servidor.
Hay otros tres elementos de configuración importantes a tener en cuenta, que son proxy_set_header Host, proxy_set_header X-Real-IP, y proxy_set_header X-Forwarded-For. Estos elementos de configuración nos ayudan a obtener la dirección IP real, que se pasa mediante la configuración de la cabecera de solicitud al servidor backend.
Recuerda guardar el archivo de configuración y reiniciar Nginx. ¡ahora puedes obtener la dirección IP real a través del proxy inverso de Nginx!
3. Obtener una dirección IP real
Bien, ¡ahora vamos a probarlo! Sólo tienes que dar salida a la dirección IP del cliente en el servidor backend.
Si está desarrollando una aplicación back-end en PHP, puede utilizar el siguiente código:
$ip = $_SERVER['REMOTE_ADDR'];
echo "La dirección IP del cliente es:".$ip;
Después de ejecutar el código de prueba, verás que la dirección IP de salida es la dirección IP real del cliente. ¿No es asombroso?
4. Prevención de direcciones IP falsificadas
Por supuesto, los inteligentes deben haber pensado que la dirección IP obtenida a través del proxy inverso Nginx podría ser falsificada, ¿verdad? Sí, este es un problema que debemos tener en cuenta.
Es una buena cosa que pensamos en esto antes de tiempo y establecer proxy_set_header X-Real-IP y proxy_set_header X-Forwarded-For en la configuración de Nginx. el contenido de estos dos encabezados de solicitud es auto-poblada por Nginx por lo que no tiene que preocuparse de ser suplantado.
Además, para mayor seguridad, puede optimizar la configuración de Nginx para incluir restricciones como, por ejemplo, permitir que sólo pasen solicitudes de determinadas direcciones IP.