Nginx 리버스 프록시에서 포워드 커스텀 헤더


25

추가 처리를 위해 Apache에 요청을 전달하는 리버스 프록시 역할을하는 nginx 웹 서버가 있습니다 (이유를 묻지 않기를 간청합니다). 사용자 정의 헤더를 첨부하려고하는 요청이 있으며 nginx가 해당 사용자 정의 헤더를 Apache와 함께 전달하여 앱에서 무언가를 할 수 있기를 원합니다.

나는 HttpProxyModule문서를 찔 렀지 만, 올바른 장소에 있더라도 설명이 잘되지 않습니다 (아직 잘하지 않을 수도 있습니다).

nginx가 X-CUSTOM-REFERRER헤더 를 전달하도록하려면 어떻게해야합니까? 또한, 가능하다면, 나는 그것이 함께 전달하고 싶은 어떤 에서 오는 사용자 정의 헤더. 후자는 너무 많은 요청하는 경우, 전자는 내 현재의 필요 충분합니다.

보시다시피, 저는 nginx를 처음 사용하므로 치료 버전이 도움이 될 것입니다.

감사.

최신 정보

기존 설정의 관련 스 니펫 :

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;
}

답변:


20

HttpProxyModuleproxy_set_header지시문을 통해이를 수행 할 수 있습니다. 예를 들면 다음과 같습니다.

proxy_pass http://apachehost;
proxy_set_header X-Custom-Referrer $proxy_add_<header_field_name_from_last_request>;

1
감사합니다, @mgorven. 그러나 들어오는 값은 가변적입니다. 수신 X-Custom-Referrer헤더 에서 값을 읽고 전달할 수 있습니까? proxy_set_header X-Custom-Referrer $x_custom_referrer또는 그 효과에 뭔가?
Rob Wilkerson 21:53에

1
예,을 사용할 수 있습니다 $http_x_custom_referrer. 그러나 클라이언트가 보낸 모든 헤더는 자동으로 백엔드로 전달되어야합니다. proxy_pass_request_headers off어딘가에 설정 했습니까 ?
mgorven

내가 볼 수있는 것은 아닙니다. 구성 파일의 스 니펫으로 질문을 업데이트했습니다. 그래도 헤더는 앱에 적용되지 않습니다. 즉, 소스 앱이 전송 한다고 가정 하고 있으므로 실사를 수행하고 이것이 기본 동작인지 확인해야합니다.
Rob Wilkerson

당신의 발췌 문장에서 @RobWilkerson proxy_set_header는 주석 처리됩니다. 또한 당신은 $x_custom_referrer대신 사용하고 있습니다 $http_x_custom_referrer...
Severin

@mgorven의 답변이 $http_<custom_header_field>대신 업데이트되어야한다고 생각합니다.$proxy_add_<custom_header_field>
Tri Nguyen

2

ngx_headers_more 모듈을 사용하면 http 헤더를 변경하고 추가 할 수 있습니다.


이 모듈은 응답에 헤더를 추가합니다. OP가 요구하는 것은 아닙니다. 에서 업스트림에 추가 헤더를 보내야합니다 proxy_pass.
빅터 슈뢰더

1

업스트림 헤더 ($ http_로 시작)와 추가 사용자 정의 헤더를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

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

다음으로 콘솔로 이동하여 사용자 헤더로 요청하십시오.

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

응답에는 서버에서 설정 한 X-Hdr-01과 클라이언트에서 설정 한 X-Upstream-01이 포함됩니다.

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

1
응답에 헤더를 설정합니다. OP는 헤더를 proxy_pass지시문 의 업스트림으로 보내도록 설정하려고합니다 .
빅터 슈뢰더
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.