2012-12-17 20 views
6

के पीछे गैर-मानक पोर्ट चलाने वाले nginx मशीन पर रीडायरेक्ट करें मेरे पास एक nginx सर्वर प्रसंस्करण PHP अनुरोध है, लेकिन यह एक गैर मानक पोर्ट (पोर्ट 12345 या कुछ) पर सुनने के लिए कॉन्फ़िगर किया गया है। मैं श्रवण बंदरगाह नहीं बदल सकता क्योंकि कॉर्पोरेट आईटी कहता है, "नहीं।"301 प्रॉक्सी

डाटा सेंटर उस पोर्ट पर nginx बॉक्स को www.domain.com:80 से अनुरोध अग्रेषित करता है में एक प्रॉक्सी है 12345

मैं, कुछ स्थिर 301 लिंक है कि मैं जगह में डाल करने के लिए की जरूरत है, लेकिन मुझे अप्रत्याशित व्यवहार हो रहा है। "सर्वर {}"

नमूना site.conf में पुनर्निर्देश ब्लॉक:

rewrite ^/foo$ /bar/foo/ permanent; 

जब मैं www.domain.com/foo पर जाने के लिए प्रयास करते हैं, रीडायरेक्ट होता है, लेकिन यह करने के लिए ब्राउज़र को अग्रेषित करने की कोशिश करता है www.domain.com:12345/bar/foo/

मेरा सवाल है, मैं उपयोगकर्ता को सही पोर्ट (www.domain.com/bar/foo/) पर रीडायरेक्ट करने के लिए nginx कैसे प्राप्त कर सकता हूं?

शायद एक बेहतर सवाल यह है कि मैं जो पूछ रहा हूं उसे करने का सही तरीका क्या है? ऐसे 50+ रीडायरेक्ट हैं जिन्हें जाने की आवश्यकता है, और मैं उन प्रत्येक रीडायरेक्ट के लिए "स्थान" अनुभाग नहीं बनाना चाहता हूं।

उत्तर

2

आप एक और अधिक स्पष्ट पुनर्लेखन प्रदान कर सकते हैं। निम्नलिखित का प्रयास करें:

rewrite ^/foo/ $scheme://www.domain.com:80/bar$request_uri permanent; 

मैं, मान लिया है कि आप ^/foo$ के बजाय ^/foo/ का उपयोग करने के लिए होती है क्योंकि ^/foo$ एक बहुत ही विशेष मामला है। आवश्यकतानुसार बस संशोधित करें।

+1

धन्यवाद, केविन। मैं वास्तव में मतलब ^/foo/क्योंकि यह एक विशिष्ट यूआरएल है जिसे मैं लक्षित कर रहा हूं (प्रति मार्केटिंग अनुरोध)। यह बहुत अच्छा काम करता है, और मैंने इसे थोड़ा संशोधित किया: फिर से लिखना ^/foo/$ योजना: // $ server_name: 80/bar/permanent; – Jason