|
Este módulo nos permite alterar o valor do endereço IP do cliente no cabeçalho da solicitação do cliente (por exemplo, X-Real-IP ou X-Encaminhado-For). Esse recurso é muito útil para servidores Nginx se o Nginx atuar atrás de alguns proxies de balanceamento de carga da Camada 7, porque o IP local da solicitação do cliente (ou seja, o endereço da solicitação do cliente) é adicionado ao cabeçalho do endereço IP do cliente ao passar pelo proxy da Camada 7, para que o backend Nginx possa obter o valor do endereço IP do cliente. O módulo não está instalado por padrão, então se quiser usá-lo, precisa adicionar a opção --with-http_realip_module ao compilar a instalação. A razão para usar este módulo é que ele permite que o servidor em segundo plano registre o endereço IP do cliente original. Exemplo de configuraçãoset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Dedos Ordem O módulo fornece apenas duas instruções. Nome da instrução: set_real_ip_from Função: Especificar um endereço confiável por meio deste comando será substituído por um endereço IP exato. Soquetes Unix confiáveis também podem ser usados a partir da versão 0.8.22. O IP definido aqui refere-se à interfaceNginx、VernizouLuladeIPEndereço. Sintaxe: set_real_ip_from [o endereço| CIDR|" Unix :"] Valor padrão: nenhum Ambiente de uso: http, servidor, localização Nome da instrução: real_ip_header Função: Este comando é usado para definir qual cabeçalho usar para substituir o endereço IP. Se for usado X-Forwarded-For, o módulo substituirá o endereço IP do proxy front-end pelo último endereço IP no cabeçalho X-Forwarded-For. Sintaxe: real_ip_header [X-Real-IP| X-Encaminhado-Para] Valor padrão: real_ip_header X-Real-IP Ambiente de uso: http, servidor, localização Casos de Uso No exemplo a seguir, nosso ambiente é assim: existem dois servidores Nginx, um é o frontend e o outro é o backend, o Nginx frontend é usado como proxy, e o backend Nginx é usado para fornecer acesso à página, e também há um cliente com o seguinte endereço IP: Nginx Frontend: 192.168.7.10 Nginx de Backend: 192.168.1.15 Anfitrião cliente: 218.239.201.36 A configuração do Nginx no frontend é a seguinte: server { ouça 80; server_name www.xx.com;
Localização / { root html; índice index.html index.htm; Charset UTF-8; }
localização /865 { proxy_pass http://192.168.3.139:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Encaminhado-Para $proxy_add_x_forwarded_for; proxy_set_header Apresentador $host; proxy_redirect desligado; }
……
} A configuração Nginx para o backend é a seguinte: server { ouça 80; server_name localhost;
Localização / { root /var/www/html; índice index.html index.htm; } Acesse o teste Se acessarmos a http://www.xx.com/865, sem problema, pode ser um acesso normal, o log de acesso é o seguinte: Logs do Nginx frontend: 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" Logs do 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 os logs backend Nginx não registram o endereço IP do cliente original, mas sim o endereço IP do Nginx frontend. Se você modificar a configuração do servidor Nginx em segundo plano para: server { ouça 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;
Localização / { root html; índice index.html index.htm; }
……
}
Depois fazemos o teste de acesso novamente: Logs do Nginx frontend: 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" Logs do 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" Pode-se ver que, desta vez, o segundo plano registra o endereço IP do cliente.
|