2014-10-07 2 views
15

में 404 के साथ विफल और मैं नीचे के रूप में nginx आभासी मेजबान फ़ाइल कॉन्फ़िगर करें:लाई जा रही है स्टैटिक फ़ाइलें मैं अब nginx साथ एक Django अनुप्रयोग की तैनाती कर रहा हूँ और ubuntu 12.</p> <p>पर gunicorn nginx

server { 
    listen 80; 
    server_name mydomain.com; 
    access_log /var/log/nginx/gunicorn.log; 

    location/{ 
     proxy_pass http://127.0.0.1:8000; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 

    location /static/ { 
     root /var/www/django/ecerp/erp/static/; 
    } 

} 

मैं django अच्छी तरह से अनुरोध कर सकते हैं, लेकिन जब एक स्थिर फ़ाइल का अनुरोध, यह 404 स्थिति के साथ प्रतिक्रिया।

मुझे यकीन है कि स्थैतिक फ़ाइल का रूट पथ सही है।

क्या कोई मदद कर सकता है?

+1

http://wiki.nginx.org/Pitfalls#Root_inside_Location_Block। http://nginx.org/r/root –

+0

मैं यह भी सुनिश्चित करता हूं कि आपके nginx उपयोगकर्ता को निर्देशिका तक पहुंचने की अनुमति है। शुभकामनाएं – pztrick

+0

@pztrick अनुमति की अनुमति नहीं है। मैंने इसे 777 के रूप में बदल दिया। और अब 404 लौट रहा है लेकिन 403 नहीं। –

उत्तर

25

आपको root के बजाय alias का उपयोग करना चाहिए। root पिछली यूआरएल भागों को आपके स्थानीय पथ में जोड़ता है (उदा। http://test.ndd/trailing/part, यह आपके स्थानीय पथ में जोड़/पीछे/भाग देगा)। इसके बजाए, alias वही करता है जो आप चाहते हैं: जब http://test.ndd/static/ का अनुरोध किया जाता है,/स्थैतिक को फिर से स्थिर किए बिना, आपके उपनाम में स्थैतिक मैप किया जाता है।

+3

मैंने इसे समझने की कोशिश में लगभग 3 घंटे बिताए, धन्यवाद! – noahandthewhale

3

टी एल; डॉ - आप की जाँच करनी चाहिए अपनी फ़ाइलें अनुमतियाँ

इस सवाल पर ठोकर खाई और मैं पहले से ही, रूट के बजाय alias उपयोग कर रहा था इसलिए जब मौजूदा जवाब ऊपर बात करने के लिए किया गया था, निम्नलिखित उपयोगी हो सकता है दूसरों के लिए।

मेरे मामले में, उसी लक्षण का समाधान static/ में root में फ़ाइलों के रूप में सामने आया।

एक साधारण chown www-data:www-data . समस्या हल हो गई, और 404 नहीं।

+0

मैंने भी chmod के साथ यह कोशिश की। फ़ाइल पर nginx वास्तव में किस अनुमति की आवश्यकता है? केवल पढ़ने के लिए पर्याप्त नहीं लगता है। पूर्ण पहुंच ओवरकिल लगता है। –

+0

@ एसटी-डीडीटी Nginx से 'रूट' फ़ाइलों तक पहुंचने का कोई अच्छा विचार नहीं है, जो भी अनुमति हो सकती है। 'चाउन' का उपयोग करना यहां एक बेहतर विकल्प है। – Jivan

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