proxy_pass와 함께 사용할 때 sub_filter가 작동하지 않는 이유는 무엇입니까?


21

다음과 같은 nginx 구성이 제공됩니다.

server {
    listen  80;
    server_name apilocal;
    sub_filter  "apiupstream/api" "apilocal";
    sub_filter_once off;
    location /people/ {
            proxy_pass  http://apiupstream/api/people/;
            proxy_set_header Accept-Encoding "";
    }
}

Sub_filter가 응답의 일부에 올바르게 응답하지 않습니다. 구성에서 proxy_pass를 제거하면 제대로 작동합니다. 이 문제를 가진 많은 사람들은 업스트림 서버에서 gzip 압축을합니다. 업스트림 서버에 응답을 위해 gzip 인코딩이 설정되어 있지 않은지 확인했습니다. 그러나 경우에 따라 위의 proxy_set_header를 사용하여 gzip을 허용하지 않았습니다.

내가 놓친 다른 것이 있습니까?

답변:


15

응답 sub_filter_types에 기본적으로 정의 된 것과 다른 내용 유형이있을 수 있습니다 .

참조 : http://nginx.org/r/sub_filter_types


25
proxy_set_header Accept-Encoding ""이 없습니다. 응답에 압축이 허용되지 않음을 백엔드에 알려 주어야합니다.
James T Snell

1
@JamesTSnell 주석을 포함하도록 원래 답변을 편집해야하며, 그렇지 않으면 답변이 쓸모가 없습니다.
HeadCode

7

James T Snell은 다음과 같이 답변했습니다.

proxy_set_header Accept-Encoding ""이 없습니다. 응답에 압축이 허용되지 않음을 백엔드에 알려 주어야합니다.


0

위치 블록 안에 있어야합니까? 또한 일치하는 arg에 따옴표가 없습니까?

http://wiki.nginx.org/HttpSubModule

location / {   sub_filter      
      </head>   
      '</head><script
      language="javascript" src="$script"></script>';   
      sub_filter_once on;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.