Nginx कई जड़ें


13

मैं किसी विशेष उप-निर्देशिका के अनुरोधों को किसी अन्य रूट स्थान पर डायवर्ट करना चाहूंगा। कैसे? मेरा मौजूदा ब्लॉक है:

server {
    listen       80;
    server_name  www.domain.com;

    location / {
        root   /home/me/Documents/site1;
        index  index.html;
    }

    location /petproject {
        root   /home/me/pet-Project/website;
        index  index.html;
        rewrite ^/petproject(.*)$ /$1;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    } }

यानी http://www.domain.com को /home/me/Documents/site1/index.html पर काम करना चाहिए , जबकि http://www.domain.com/petproject को सेवा / घर / मुझे / पालतू-परियोजना / वेबसाइट करना चाहिए /index.html - ऐसा लगता है कि nginx प्रतिस्थापन के बाद सभी नियमों को फिर से चलाता है, और http://www.domain.com/petproject बस /home/me/Documents/site1/index.html परोसता है।

जवाबों:


28

कॉन्फ़िगरेशन में सामान्य समस्या है जो आम तौर पर nginx के साथ होती है। यही है, ब्लॉक के rootअंदर निर्देश का उपयोग करना location

अपने वर्तमान locationब्लॉकों के बजाय इस कॉन्फ़िगरेशन का उपयोग करने का प्रयास करें :

root /home/me/Documents/site1;
index index.html;

location /petproject {
    alias /home/me/pet-Project/website;
}

इसका मतलब है कि आपकी वेबसाइट के लिए डिफ़ॉल्ट निर्देशिका है /home/me/Documents/site1, और /petprojectयूआरआई के लिए, सामग्री /home/me/pet-Project/websiteनिर्देशिका से सेवा की जाती है ।


4

आपको breakध्वज को फिर से लिखने के नियम में जोड़ा जाना चाहिए, ताकि प्रसंस्करण बंद हो जाए, और जैसा कि यह एक स्थान के अंदर है ब्लॉक प्रसंस्करण उस ब्लॉक के अंदर जारी रहेगा:

rewrite ^/petproject/?(.*)$ /$1 break;

नोट मैंने /?मिलान पैटर्न में भी जोड़ा है ताकि आप url की शुरुआत में डबल स्लैश के साथ समाप्त न हों।


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