|
Este módulo nos permite cambiar el valor de la dirección IP del cliente en la cabecera de solicitud del cliente (por ejemplo, X-Real-IP o X-Forwarded-For). Esta función es muy útil para servidores Nginx si Nginx funciona detrás de algunos proxies de balanceo de carga de Capa 7, porque la IP local de la solicitud del cliente (es decir, la dirección de la solicitud del cliente) se añade al encabezado de la dirección IP del cliente al pasar por el proxy de Capa 7, de modo que el Nginx backend puede obtener el valor de la dirección IP del cliente. El módulo no está instalado por defecto, así que si quieres usar el módulo, tienes que añadir la opción --with-http_realip_module al compilar la instalación. La razón de usar este módulo es que permite al servidor en segundo plano registrar la dirección IP del cliente original. Ejemplo de configuraciónset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Dedos Orden El módulo solo proporciona dos instrucciones. Nombre de la instrucción: set_real_ip_from Función: Especificar una dirección confiable mediante este comando será reemplazada por una dirección IP exacta. Los sockets Unix confiables también pueden usarse a partir de la versión 0.8.22. El conjunto de IP aquí se refiere al frontendNginx、BarnizoCalamardeIPDirección. Sintaxis: set_real_ip_from [la dirección| CIDR|" unix :"] Valor por defecto: ninguno Entorno de uso: http, servidor, ubicación Nombre de la instrucción: real_ip_header Función: Este comando se utiliza para establecer qué cabecera usar para reemplazar la dirección IP. Si se utiliza X-Forwarded-For, el módulo reemplazará la dirección IP del proxy frontal por la última dirección IP en la cabecera X-Forwarded-For. Sintaxis: real_ip_header [X-Real-IP| X-Forward-For] Valor por defecto: real_ip_header X-Real-IP Entorno de uso: http, servidor, ubicación Casos de uso En el siguiente ejemplo, nuestro entorno es así: hay dos servidores Nginx, uno es el frontend y el otro es el backend, el Nginx frontend se usa como proxy, y el backend Nginx se usa para proporcionar acceso a páginas, y también hay un cliente con la siguiente dirección IP: Nginx frontal: 192.168.7.10 Backend Nginx: 192.168.1.15 Anfitrión cliente: 218.239.201.36 La configuración de Nginx en el frontend es así: server { escuchar 80; server_name www.xx.com;
Ubicación / { HTML raíz; índice index.html index.htm; Charset UTF-8; }
ubicación /865 { proxy_pass http://192.168.3.139:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Presentador $host; proxy_redirect fuera; }
……
} La configuración Nginx para el backend es la siguiente: server { escuchar 80; server_name localhost;
Ubicación / { raíz /var/www/html; índice index.html index.htm; } Accede al examen Si accedemos al http://www.xx.com/865, no hay problema, puede ser un acceso normal, el registro de acceso es el siguiente: Registros del frontend Nginx: 218.239.201.36 - - [30/Ago/2011:16:09:56 +0800] "GET /865/ HTTP/1.1" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Registros de backend Nginx: 192.168.7.10 - - [30/ago/2011:16:09:56 +0800] "GET // HTTP/1.0" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Vemos que los registros de Nginx del backend no registran la dirección IP del cliente original, sino la dirección IP del Nginx del frontend. Si modificas la configuración del servidor Nginx en segundo plano para: server { escuchar 80; server_name localhost; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
Ubicación / { HTML raíz; índice index.html index.htm; }
……
}
Luego hacemos la prueba de acceso de nuevo: Registros del frontend Nginx: 218.239.201.36 - - [30/ago/2011:16:10:28 +0800 "GET /865/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Registros de backend Nginx: 218.239.201.36 - - [30/ago/2011:16:10:28 +0800] "GET // HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Se puede ver que esta vez el segundo plano registra la dirección IP del cliente.
|