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

다음과 같은 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을 허용하지 않았습니다.

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



답변

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

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


답변

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

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


답변

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

http://wiki.nginx.org/HttpSubModule

location / {   sub_filter
      </head>
      '</head><script
      language="javascript" src="$script"></script>';
      sub_filter_once on;
}


답변