के साथ एक स्थान शीर्षलेख संशोधित करना मेरे पास /api
पर बैकएंड आरईएसटी सेवा के माध्यम से प्रत्येक अनुरोध को पास करने के लिए nginx proxy_pass
सेटअप है। कुछ मामलों में यह सेवा Location
शीर्षलेख लौटाती है जो अनुरोध के प्रकार के अनुसार बदलती है, उदाहरण के लिए, Location: http://foo.bar/baz/api/search/1234567
- baz
भाग टोमकैट पर होस्ट होने के कारण है।nginx proxy_pass
मेरी वर्तमान कॉन्फ़िगरेशन foo.bar
होस्ट नाम सही ढंग से फिर से लिखता है, लेकिन baz
भाग को बरकरार रखता है। मैं इसे पट्टी करना चाहता हूं, लेकिन proxy_pass विकल्प हेडर के लिए एक नया मान साफ़ करने या सेट करने के लिए सीमित प्रतीत होते हैं।
उदाहरण के लिए, रेगेक्स विकल्प का उपयोग कर क्लाइंट को पारित होने से पहले गतिशील रूप से हेडर को संशोधित करने का कोई तरीका है? यह मेरा nginx विन्यास है:
location /api {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
proxy_redirect off;
proxy_pass http://foo.bar:8080/baz/api;
}
आपकी प्रतिक्रिया के लिए धन्यवाद, लेकिन मुझे रीडायरेक्ट करने में बहुत दिलचस्पी नहीं है (जो ठीक काम कर रहा है), लेकिन 'स्थान' शीर्षलेख को संशोधित करने में जो सर्वर प्रतिक्रिया के रूप में लौटाया गया है। एपीआई एक 'स्थान' शीर्षलेख देता है जिसमें यूआरएल होता है जहां क्लाइंट को पिछली क्वेरी के परिणाम प्राप्त होते हैं। यह अब एक दोषपूर्ण स्थान की ओर इशारा कर रहा है क्योंकि सर्वर को यह नहीं पता कि यह प्रॉक्सी हो रहा है। – user2010963
proxy_redirect स्थान शीर्षलेख को संशोधित करता है ... इसका उद्देश्य है। Nginx दस्तावेज़ों पर एक नज़र डालें (http://wiki.nginx.org/HttpProxyModule#proxy_redirect) :) –
ओह, मैं देखता हूं! उसने वास्तव में ऐसा किया था। धन्यवाद! (हालांकि मुझे लगता है कि 'रीडायरेक्ट' वास्तव में क्या करता है इसके लिए सबसे अच्छा नाम नहीं है) – user2010963