Encaminhar cabeçalho personalizado do proxy reverso Nginx

20

Eu tenho um servidor web nginx atuando como um proxy reverso para encaminhar solicitações para o Apache para tratamento adicional (estou implorando para você não perguntar por quê). Tenho uma solicitação para a qual estou tentando anexar um cabeçalho personalizado e gostaria que o nginx enviasse esse cabeçalho personalizado para o Apache para que eu pudesse fazer algo com ele em um aplicativo.

Eu examinei os HttpProxyModule docs, mas eles não são muito descritivos, mesmo se eu estiver no lugar certo (pode muito bem ser que eu não seja).

Como posso obter o nginx para encaminhar um cabeçalho X-CUSTOM-REFERRER ? Além disso, se possível, eu gostaria que ele enviasse qualquer cabeçalho personalizado que chegar. Se o último for demais para perguntar, o primeiro seria suficiente para minha necessidade atual.

Como você pode ver, sou muito novo no nginx, então a versão de correção seria útil.

Obrigado.

UPDATE

O snippet relevante da minha configuração existente:

location / {
    proxy_pass                  http://preview;
    proxy_redirect              off;
    proxy_set_header            Host $host;
    proxy_set_header            X-Real-IP $remote_addr;
    proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
    # proxy_set_header            X-Custom-Referrer $x_custom_referrer;
}
    
por Rob Wilkerson 22.05.2012 / 20:45

3 respostas

17

O proxy_set_header directiva do HttpProxyModule permite que você faça isso. Por exemplo:

proxy_pass http://apachehost;
proxy_set_header X-Custom-Referrer $proxy_add_<header_field_name_from_last_request>;
    
por 22.05.2012 / 23:39
2

O módulo ngx_headers_more permite que você altere e adicione cabeçalhos http.

    
por 22.05.2012 / 20:58
1

Você pode usar cabeçalhos upstream (nomeados a partir de $ http_) e cabeçalhos personalizados adicionais. Por exemplo:

add_header X-Upstream-01 $http_x_upstream_01;
add_header X-Hdr-01  txt01;

em seguida, vá para o console e faça solicitações com o cabeçalho do usuário:

curl -H "X-Upstream-01: HEADER1" -I http://localhost:11443/

a resposta contém X-Hdr-01, configurada pelo servidor e X-Upstream-01, configurada pelo cliente:

HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Mon, 30 Nov 2015 23:54:30 GMT
Content-Type: text/html;charset=UTF-8
Connection: keep-alive
X-Hdr-01: txt01
X-Upstream-01: HEADER1
    
por 01.12.2015 / 00:59