हल करें मैं मिलान पथ उपसर्ग को हटाते समय proxy_pass का उपयोग कर किसी अन्य सर्वर से अनुरोध को प्रॉक्सी करना चाहता हूं। मेरा मानना है कि ऐसा करने का एक तरीका निम्नानुसार है;एनजीआईएनएक्स proxy_pass पथ उपसर्ग को हटाएं और DNS
location /a/ {
proxy_pass https://website.com/
}
उदा। http://localhost/a/b.html
पर एक अनुरोध https://website.com/b.html
पर प्रॉक्सी किया जाएगा।
जहां तक मुझे पता है कि एनजीआईएनएक्स पर गैर-वाणिज्यिक संस्करणों में इस मुद्दे के साथ समस्या यह है कि website.com
के लिए DNS ए रिकॉर्ड लोड हो जाएगा और स्टार्टअप पर हमेशा के लिए कैश किया जाएगा। मैंने proxy_pass निर्देश में $request_uri
जैसे चर का उपयोग करके इसे हल करने के लिए एक तकनीक देखी है, इस प्रकार रिकॉर्ड के टीटीएल के अनुसार DNS को फिर से हल करने के लिए एनजीआईएनएक्स को मजबूर कर रहा है।
उदा।
location /a/ {
rewrite ^/a/(.*) /$1 break;
proxy_pass https://website.com/$request_uri
}
दुर्भाग्य से, ऐसा लगता है के रूप में यह अभी भी नदी के ऊपर करने के लिए/एक/उपसर्ग पारित करने के लिए लगता है कि इसके बाद के संस्करण काम नहीं करता।
अनिवार्य रूप से मैं यहां हासिल करना चाहता हूं, पथ उपसर्ग को इस तरह से हटाते हुए अनुरोध को प्रॉक्सी करना है कि DNS रिकॉर्ड्स हमेशा के लिए कैश नहीं किए जाते हैं।
धन्यवाद।
आपके उत्तर के लिए धन्यवाद, मैं आज इसका परीक्षण करूंगा और यदि यह ठीक काम करता है तो मैं इस उत्तर को स्वीकार कर दूंगा। मुझे संकल्प के बारे में पिछली सलाह मिली [यहां] (http://gc-taylor.com/blog/2011/11/10/nginx-aws-elb-name-resolution-resolvers)। मुझे पूरा भरोसा है कि जब तक डीएनएस को हल करने के लिए इसका "इरादा" प्रभाव पड़ा, क्योंकि इसके बिना पहले अपस्ट्रीम विश्वसनीय रूप से हर कुछ दिनों में उपलब्ध नहीं होगा और मुझे फिर से शुरू करने की आवश्यकता होगी। मैंने इसे 3 महीने से अधिक समय तक चालू नहीं किया है, बिना किसी पुनरारंभ के और मुझे उस परिवर्तन के बाद से किसी भी DNS समस्या का सामना नहीं हुआ है। –
ओह, हाँ, अगर nginx सभी होस्टनामों के 5 मिनट के लिए कैश रखता है तो यह proxy_pass के भीतर किसी भी चर के अस्तित्व में हल होता है, जो समझ में आता है; यह वास्तव में उस तरह से दस्तावेज भी है, लेकिन यह बहुत स्पष्ट नहीं है! हर दिन सीखो! :-) इसलिए, मुझे लगता है कि उपर्युक्त काम करना चाहिए, और आपको '.com' के बाद '/' को भी हटा देना चाहिए, उदाहरण के लिए, होना चाहिए।कॉम $ uri' – cnst
तो प्रारंभिक परीक्षण आपके मूल सुझाव 'पुनः लिखना ^/a /(.*)/$ 1 ब्रेक के साथ ठीक काम करने लगते हैं; proxy_pass https://website.com/$uri$is_args$args;) 'लेकिन' .com $ uri' के साथ ठीक नहीं है (क्वेरी पैरामीटर अपस्ट्रीम के लिए प्रचारित नहीं हैं। मैं पहले सुझाव के साथ रहूंगा। धन्यवाद जवाब के लिए! –