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

Vista: 15060|Resposta: 0

[Web] O nginx front-end e o servidor nginx back-end registram o endereço IP do cliente original

[Copiar link]
Publicado em 03/11/2014 09:53:23 | | |

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ção
set_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 à interfaceNginxVernizouLuladeIPEndereç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.







Anterior:Modo proxy nginx, obtenha o endereço IP real do cliente
Próximo:Discuz! X3.1 Todas as versões do X3 contornam permissão de download de anexos sem créditos Vulnerabilidade de download ilimitado
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