다음과 같은 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
에 기본적으로 정의 된 것과 다른 내용 유형이있을 수 있습니다 .
답변
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;
}