जब nginx को रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर किया गया है, तो क्या यह अपाचे के प्रॉक्सी सर्वर की तरह डाउनस्ट्रीम सर्वर पर होस्ट हेडर को फिर से लिख सकता है?


11

मैं अपाचे के ProxyPreserveHost http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxypreservehost विकल्प के समतुल्य को nginx में खोजने के लिए प्रतीत नहीं कर सकता । इसके लिए प्रॉक्सी को वर्चुअल होस्ट पर रिवर्स करना आवश्यक है।

यह जो करता है वह होस्ट नाम को प्रतिस्थापित करता है जो ब्राउज़र डाउनस्ट्रीम सर्वर के होस्ट नाम के साथ प्रदान करता है।

क्या यह मौजूद है?

जवाबों:


11

मुझे लगता है कि मुझे समस्या का हल मिल गया। डाउनस्ट्रीम सर्वर के होस्ट को भेजना निगनेक्स में डिफ़ॉल्ट व्यवहार है, और मैंने निर्देश का उपयोग करके इसे ओवरराइड कर दिया था:

proxy_set_header Host $host;

जो ब्राउज़र द्वारा अनुरोधित होस्ट को डाउनस्ट्रीम सर्वर पर भेजता है। ठीक इसके विपरीत जो मैं चाहता था।

इसलिए, जबकि nginx में Apache के समतुल्य नहीं है ProxyPreserveHost, उसी व्यवहार को proxy_set_headerनिर्देश के साथ प्राप्त किया जा सकता है , और nginx का समाधान अधिक सामान्य है।


होना चाहिए proxy_set_header Host $http_host;
रोब

@Rob, $http_hostNginx डॉक्स के अनुसार मौजूद नहीं है: nginx.org/en/docs/varindex.html
डैनियल सेरोडियो

1
@DanielSerodio वास्तव में, हाँ यह मौजूद है, कम से कम 99.99% कनेक्शन के लिए। प्रलेखन देखें । यह बहुत सूक्ष्म रूप से भिन्न होता है $host
माइकल हैम्पटन


1

एक कार्य उदाहरण:

  set $s3_bucket 'SOMEBUCKET.s3.amazonaws.com';

  location / {
        send_timeout 5m;
        proxy_read_timeout 240;
        proxy_send_timeout 240;
        proxy_connect_timeout 240;
        proxy_http_version 1.1;
        proxy_set_header Host $s3_bucket;
        proxy_set_header Authorization '';
        proxy_hide_header x-amz-id-2;
        proxy_hide_header x-amz-request-id;
        proxy_ignore_headers "Set-Cookie";
        proxy_buffering off;
        proxy_intercept_errors on;
        proxy_redirect off;
        resolver 8.8.8.8;
        proxy_pass http://$s3_bucket;
        }

यह नगनेक्स का उपयोग कर रहा है।
कोड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.