2013-01-24 10 views
26

अनुप्रेषित विचार http://abc.example.com/... को आने वाले अनुरोधों को लेने के लिए और यही कारण है कि बहुत आसान एक 301/302 रीडायरेक्ट के साथ क्या करना है http://example.com/abc/...Nginx पथ घटक के उप डोमेन परिवर्तित बिना

करने के लिए उन्हें फिर से लिखने के लिए है:

# rewrite via 301 Moved Permanently 
server { 
    listen 80; 
    server_name abc.example.com; 
    rewrite^$scheme://example.com/abc$request_uri permanent; 
} 

चाल और example.com उसी Nginx उदाहरण पर इंगित करते समय इस यूआरएल को पारदर्शी रूप से क्लाइंट में बदलना है।

अलग ढंग से कहें तो Nginx example.com/abc/... से सामग्री की सेवा कर सकते जब abc.example.com/... का अनुरोध किया और है किसी अन्य ग्राहक के राउंड ट्रिप बिना?

शुरू प्वाइंट कॉन्फ़िग

Nginx config कि एक 301 के साथ कार्य पूरा करता है:

# abc.example.com 
server { 
    listen 80; 
    server_name abc.example.com; 
    rewrite^$scheme://example.com/abc$request_uri permanent; 
} 

# example.com 
server { 
    listen 80; 
    server_name example.com; 
    location/{ 
    # ... 
    } 
} 

उत्तर

30
# abc.example.com 
server { 
    listen 80; 
    server_name abc.example.com; 
    location/{ 
    proxy_pass http://127.0.0.1/abc$request_uri; 
    proxy_set_header Host example.com; 
    } 
} 
+2

ही Nginx प्रॉक्सी होने महान काम करता है। मेजबान को 127.0.0.1 में बदल दिया गया क्योंकि अन्यथा Nginx को होस्टनाम को हल करना है (एक पूरी अलग समस्या)। '$ Request_uri' जोड़ा गया ताकि पथ प्रॉक्सी अनुरोध में जोड़ा जा सके। –

+0

यह पूरी तरह से काम करता है। बस स्थिर संपत्तियों के लिए देखें जो 404 हो सकते हैं। –

+1

@KJPrince 404 संपत्तियों में क्या समस्या है? –

संबंधित मुद्दे