¿Cómo obtener la IP del usuario en el Nginx de segunda capa del servidor de segunda capa?
1. Encontré un problema al configurar el servidor nginx. En el pasado, el servidor usaba una función para limitar el número máximo de conexiones simultáneas del cliente. La implementación de esta función dependía del servidor.
[html]Ver texto sin formato
$Dirección remota
implementa esta configuración. Pero después de agregar el servidor de la capa de front-end (carga, CDN, firewall, servicio de seguridad), la IP del cliente obtenida se convierte en la IP del servidor de front-end, no en la dirección IP del usuario real.
2. Ante tal problema, releí la introducción del sitio web oficial de nginx varias veces y encontré otra variable particularmente importante.
[html]Ver texto sin formato
$proxy_add_x_forwarded_for
Esta variable es el valor del campo X-forwarded-for en la solicitud de acceso del cliente. Si este campo no está incluido en la solicitud, el uso automático de esta variable será equivalente a la variable de dirección remota. Esto nos permite obtener el campo de la dirección IP real del cliente almacenado por el servidor front-end en la solicitud HTTP, que es lo que normalmente llamamos campo X_FORWARDED_FOR, y luego se pueden implementar varias funciones de esta manera.
3. Déjame hacerte una demostración sencilla. Hay muchas deficiencias, corríjanme.
Primero, creemos un buen entorno para Nginx. Aquí tomamos como ejemplo la última versión 1.7.9 de la serie 1.7 (para problemas de versión, consulte la pregunta frecuente 1).
Descargar, http://nginx.org/download/nginx-1.7.9.tar.gz Dirección requerida de WGET
1 Descargar Nginx
[. lugt @ localhostmysql]$ wget http://nginx.org/download/nginx-1.7.9.tar.gz
Descomprimir
[lugt @ localhostmysql]$ tar zxvf nginx - 1. 7. 9. tar. gz
3. Compile directamente (es necesario considerar si se necesitan complementos como openssl)
[lugt @ localhost MySQL]$ CD nginx -1 7 .
[lugt@localhost nginx-1 7 . /config
[lugt@localhost nginx-1 .7 9]$ hacer
[lugt@localhost nginx-1 9]$ su
4. Luego modifique el archivo de configuración de nginx.conf
[lugt @ localhost nginx-1 . . 9 ]$ su
[lugt @ localhost nginx-1 . 7 . $ CD/usr/local/nginx
[lugt @ localhostnginx]$ VI conf/nginx . configuración