Nginx x-accel-redirect पर "स्थान" और "प्रॉक्सी_पास" के विभिन्न व्यवहार



(1)

मेरे पास मेरे एनजीएन कॉन्फ़ की तरह है:

location ^~ /mount_points/mount_point1 {
  internal;
  alias /repos/mount_point_one;
}

location ^~ /to_proxy {
  internal;
  proxy_pass http://myproxy:5000;
}

जब मैं ' http: //localhost/mount_points/mount_point1/myfile.zip ' के लिए अनुरोध करता हूं तो मुझे "/repos/mount_point_one/myfile.zip" जैसा अपेक्षित होता है I

' Http: //localhost/to_proxy/myfile2.html ' के लिए अनुरोध करते समय, मुझे " http: // myproxy: 5000 / to_proxy / myfile2.html " मिलता है

पहले मामले में, "/ mount_points / mount_point1" भाग निकाल दिया गया था, और दूसरे मामले में, "/ to_proxy" हिस्सा अभी भी वहां है, मुझे यह पता लगाने के लिए अपस्ट्रीम सर्वर में एक "/ to_proxy" पते को नकली बनाना होगा

मैंने कुछ याद किया? अगर मुझे यूआरएल को फिर से लिखना है, तो मैं अपस्ट्रीम सर्वर पर "/ to_proxy" हिस्सा कैसे हटा सकता हूं?

धन्यवाद।


proxy_pass निर्देश एक अलियासिंग फ़ंक्शन का प्रदर्शन कर सकते हैं, लेकिन केवल अगर कोई वैकल्पिक यूआरआई प्रदान किया गया हो।

location ^~ /to_proxy/ {
    internal;
    proxy_pass http://myproxy:5000/;
}

उपनाम मैपिंग को सही ढंग से काम करने के लिए, location पैरामीटर में एक अनुगामी / भी जोड़ा गया है।

विवरण के लिए इस दस्तावेज़ को देखें।

यदि location पैरामीटर पर / पीछे के कारण समस्याओं का कारण बनता है, तो आप rewrite ... break इसके बजाय rewrite ... break उपयोग कर सकते हैं:

location ^~ /to_proxy {
    internal;
    rewrite ^/to_proxy(?:/(.*))?$ /$1 break;
    proxy_pass http://myproxy:5000;
}