प्रॉक्सी_पास के साथ संयोजन में उपयोग किए जाने पर सब_फिल्टर काम क्यों नहीं करता है?


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 प्रतिक्रिया के कुछ हिस्सों को ठीक से प्रतिक्रिया नहीं देता है। एक बार जब मैं कॉन्फ़िगरेशन से प्रॉक्सी_पास को हटा देता हूं, तो यह ठीक से काम करता है। इस समस्या वाले बहुत से लोग अपस्ट्रीम सर्वर से gzip कम्प्रेशन समाप्त करते हैं। मैंने सत्यापित किया है कि मेरे अपस्ट्रीम सर्वर में अपनी प्रतिक्रियाओं के लिए gzip एन्कोडिंग चालू नहीं है। लेकिन बस के मामले में, मैं भी ऊपर gzip स्वीकार नहीं करने के लिए ऊपर छद्म_हैदर का उपयोग किया है।

क्या कुछ और है जो मुझे याद आ रहा है?

जवाबों:


15

आपकी प्रतिक्रिया में sub_filter_typesडिफ़ॉल्ट रूप से परिभाषित की तुलना में संभवतः अन्य सामग्री-प्रकार हैं ।

संदर्भ: http://nginx.org/r/sub_filter_types


25
मेरे पास प्रॉक्सी_सेट_हीडर स्वीकार-एनकोडिंग नहीं है ""; आपको उस बैकएंड को बताने की आवश्यकता है कि प्रतिक्रिया में संपीड़न की अनुमति नहीं है।
जेम्स टी स्नेल

1
मूल उत्तर को @JamesTSnell टिप्पणी में शामिल करने के लिए संपादित किया जाना चाहिए, जिसके बिना उत्तर बेकार है।
हेडकोड

7

जेम्स टी स्नेल ने इसका जवाब एक टिप्पणी में दिया:

मेरे पास प्रॉक्सी_सेट_हीडर स्वीकार-एनकोडिंग नहीं है ""; आपको उस बैकएंड को बताने की आवश्यकता है कि प्रतिक्रिया में संपीड़न की अनुमति नहीं है।


0

क्या इसे किसी लोकेशन ब्लॉक के अंदर होना चाहिए? भी, शायद मैच arg पर कोई उद्धरण?

http://wiki.nginx.org/HttpSubModule

location / {   sub_filter      
      </head>   
      '</head><script
      language="javascript" src="$script"></script>';   
      sub_filter_once on;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.