Tại sao sub_filter dường như không hoạt động khi được sử dụng cùng với proxy_pass?


20

Cho cấu hình sau của 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 không phản hồi đúng các phần của phản hồi. Khi tôi xóa proxy_pass khỏi cấu hình, nó sẽ hoạt động bình thường. Rất nhiều người gặp vấn đề này cuối cùng đã nén gzip từ máy chủ ngược dòng. Tôi đã xác minh rằng máy chủ ngược dòng của tôi không bật mã hóa gzip cho các phản hồi của nó. Nhưng chỉ trong trường hợp, tôi cũng đã sử dụng proxy_set_header ở trên để không chấp nhận gzip.

Có khả năng tôi đang thiếu thứ gì khác không?

Câu trả lời:


15

Phản hồi của bạn có thể có loại nội dung khác ngoài định nghĩa sub_filter_typestheo mặc định.

Tham khảo: http://nginx.org/r/sub_filter_types


24
Tôi không có proxy_set_header Mã hóa chấp nhận ""; bạn cần điều đó để nói với phụ trợ rằng nén không được phép trong phản hồi.
James T Snell

1
Câu trả lời gốc nên được chỉnh sửa để bao gồm bình luận @JamesTSnell, mà không có câu trả lời là vô ích.
HeadCode 16/03/18

7

James T Snell đã trả lời nó trong một bình luận:

Tôi không có proxy_set_header Mã hóa chấp nhận ""; bạn cần điều đó để nói với phụ trợ rằng nén không được phép trong phản hồi.


0

Có cần phải ở trong một khối vị trí? Ngoài ra, có thể không có trích dẫn về trận đấu arg?

http://wiki.nginx.org/HttpSubModule

location / {   sub_filter      
      </head>   
      '</head><script
      language="javascript" src="$script"></script>';   
      sub_filter_once on;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.