Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 17771|Resposta: 1

[Web] nginx obtém o endereço IP real do usuário

[Copiar link]
Publicado em 19/05/2018 11:38:55 | | | |
Algumas de nossas interfaces envolvem mudanças nas informações do usuário, e essas interfaces só permitem que a parte de acesso nos ajuste, então temos uma lista branca de IP no nginx.

Ele é equipado com o IP de saída da parte de acesso.

Aqui estão os logs do nosso acesso nginx.



nginx assume nosso $remote_addr como IP real, mas na verdade, $http_X_Forwarded_For é o IP real do usuário, $remote_addr é apenas o endereço de rede privada do nosso f5 (usuário -->f5 --> nginx), resultando em nginx adotar o nome errado e o usuário ajustando a interface ser sempre 403.

Solução:

No módulo http plus


set_real_ip_from 10.10.10.122; Diga ao nginx para obter o valor do RealIP de lá
real_ip_header X-Real-IP; O nome da variável que armazena o valor RealIP

Poder!

Aqui começamos o relatório nginx após acrescentar:

nginx: [emerg] unknown directive "set_real_ip_from" in /home/lnidmp/nginx/conf/nginx.conf:26




Então adicionamos o módulo realip e recompilamos nginx


1、CD/USR/LOCAL/NGINX-1.6.3
2、./configure --prefix=/usr/cmcc/nginx --com-http_stub_status_module --com-http_ssl_module --com-http_realip_module
3、Fazer &&instalar

Dicas:
1. set_real_ip_from refere-se ao IP real do usuário obtido do qual o pré-proxy confiável

2. real_ip_header refere-se ao IP do usuário da transmissão proxy anterior da qual a parte HTTP da mensagem recebida é obtida

3. real_ip_recursive Se excluir recursivamente até que o IP do usuário seja obtido (o padrão está desligado)

Primeiro, real_ip_header especificar um nome de cabeçalho http, que é X-Real-IP por padrão.

(1) Se houver 1 IP, ele verificará se o IP do remetente está na lista de IPs confiáveis especificada pelo set_real_ip_from. Se for confiável, ele pensará que o valor IP nesse X-Real-IP é o valor real do IP do usuário informado pelo agente anterior, então ele atribuirá esse valor à sua própria variável $remote_addr; Se não for confiável, não será processado, e $remote_addr ainda é o endereço IP do remetente.

(2) Se X-Real-Ip tem múltiplos valores de IP, por exemplo, o proxy anterior é definido assim: proxy_set_header X-Real-Ip $proxy_add_x_forwarded_for;

O que você obtém é uma sequência de IPs, então o valor de real_ip_recursive é crucial neste momento. Nginx comparará os IPs na lista de confiança set_real_ip_from da direita para a esquerda na lista de IPs. Se o real_ip_recursive estiver desligado, então, quando o IP mais à direita for encontrado como um IP confiável, pensa-se que o próximo IP (o segundo à direita) é o IP real do usuário. Se o real_ip_recursive estiver ligado, ele será comparado da direita para a esquerda até encontrar um IP não confiável. Depois, copie o valor do IP para $remote_addr também.

Recursos:
https://help.aliyun.com/document_detail/54007.html
https://help.aliyun.com/knowledge_detail/55198.html
https://www.linux178.com/web/nginx-get-realip.html





Anterior:Os sitemaps em discuz são gerados automaticamente
Próximo:Use o balanceamento de carga do Alibaba Cloud para bloquear o acesso IP a sites
Publicado em 18/06/2018 14:57:50 |
Olha, nginx fica com a IP real
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com