Campos diferentes para proxy_set_header na configuração nginx

7

Eu sou muito novo na configuração do nginx. Desejo usá-lo para configurar hosts virtuais para que eu possa executar diferentes aplicativos Node JS em diferentes portas no mesmo servidor, mas tê-los em subdomínios diferentes. Após algumas pesquisas, encontrei um post no stackoverflow e ele funciona bem para o que eu quero fazer. Entre outras coisas, o código envolveu o seguinte bloco de localização

location / {                                                              │
    proxy_set_header X-Real-IP $remote_addr;                              │
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;          │
    proxy_set_header Host $http_host;                                     │
    proxy_set_header X-NginX-Proxy true;                                  │
                                                                          │
    proxy_pass http://otherapp/;                                          │
    proxy_redirect off;                                                   │
}

Agora eu queria entender o que o script faz. Eu olhei para documentos e anotações do nginx postadas por várias pessoas, e entendi algumas coisas. Parece-me que o que eu quero provavelmente funcionará mesmo se eu remover todas as linhas proxy_set_header no código acima, EXCEPT proxy_pass . Eu quero aprender o que os diferentes campos no código acima estão fazendo. Provavelmente eles são úteis para algumas coisas que eu não percebo no momento. Existe um lugar que lista todos os campos do módulo proxy_set_header e os explica?

Obrigado.

    
por user191017 22.09.2013 / 23:51

1 resposta

8

Essencialmente, o que ele está fazendo é fornecer informações para o servidor ao qual está fazendo proxy. Em ordem:

  1. X-Real-IP - o servidor ao qual você está fazendo proxy será ver o sistema proxy nginx como o "IP do cliente" em qualquer tipo de lógica de aplicativo ou log que esteja fazendo, já que o serviço nginx é a origem da conexão TCP. Isso geralmente é inútil, especialmente em logs. O servidor de backend pode usar este cabeçalho em vez de seu IP de cliente normal para log ou outros usos onde precisa do IP do cliente.
  2. X-Forwarded-For - este é um cabeçalho padrão-ish, que é semelhante a X-Real-IP , mas fornece entradas de origem de conexão adicionais para toda a cadeia de proxies pelos quais a conexão passou. Pode ser um pouco mais de dor de cabeça para analisar e trabalhar com o servidor de back-end, pois provavelmente há várias entradas.
  3. Host - Este é o mais provável de ser importante para o seu aplicativo. Normalmente, a solicitação que o nginx faz ao servidor de backend conterá em seu cabeçalho Host o endereço que você configurou (nesse caso, http://otherapp/ ). Isso provavelmente não é desejado se estiver fazendo proxies para algo que faça hospedagem virtual baseada em nome ou algo que gere links com base no cabeçalho do host recebido. Essa configuração está fazendo com que o cabeçalho Host para o qual o cliente enviou nginx seja enviado para o backend (equivalente ao ProxyPreserveHost do Apache).
  4. X-NginX-Proxy - Tudo isso está funcionando como um marcador que o proxy é usado. Provavelmente não é útil na maioria dos casos.
por 23.09.2013 / 00:11

Tags