2013-04-17 8 views
5

मैंने उत्तर के लिए जवाब देखा है और मेरा मानना ​​है कि उत्तर बहुत आसान है लेकिन मैं इसे खोजने में सक्षम नहीं था। मुझे लगता है कि nginx के ज्ञान की कमी के लिए ...nginx/बोतल पायथन - किसी अन्य बंदरगाह के लिए मार्ग अनुरोध

मेरे पास मेरा nginx उदाहरण स्थानीयहोस्ट पर चल रहा है: 8080 और मेरा बोतल सर्वर लोकलहोस्ट पर सुन रहा है: 8081। यदि मैं ब्राउज़र से पते खोलता हूं, तो वे ठीक काम करते हैं लेकिन जब मैं एप्लिकेशन से एक्सेस करने का प्रयास करता हूं तो मैं लोकलहोस्ट पर चल रहा हूं: 8080, मैं बोतल सर्वर द्वारा उत्पन्न संसाधनों को पुनर्प्राप्त नहीं कर सकता।

मुझे जो करना है वह उसी डोमेन (लोकलहोस्ट) पर/डेटा/पथ पर किए गए सभी कॉल को रीडायरेक्ट कर रहा है, लेकिन दूसरा पोर्ट (8081), जहां मेरा बोतल सर्वर सुन रहा है। ,

@route('/') 
def printtest(): 
    print 'success' 
    return 'loaded page' 

@route('/<scenename>/data/<filename:path>') 
def testMethod(scenename,filename): 
    print scenename, filename 

run(host='localhost', port=8081, debug=True) 

ब्राउज़र में कॉलिंग स्थानीय होस्ट: Nginx:

server { 
    listen  8080; 
    server_name localhost; 
    root /Users/Diego/Desktop; 

    location/{ 
     index index.html index.htm; 
    } 

    location /data/ { 
     proxy_pass http://127.0.0.1:8081; 
    } 
} 

बोतल सर्वर

यहाँ कोड है 8080, मुझे पेज nginx के माध्यम से प्रस्तुत प्रदर्शित करता है, लेकिन फिर, अगर मैं /data/directory/filename.json में संग्रहीत कुछ पुनर्प्राप्त करने के लिए एक लिंक कहता हूं, बोतल को अनुरोध प्राप्त नहीं होता है। त्रुटि लॉग कहता है:

2013/04/16 18:50:52 [error] 3544#10612: *69 CreateFile() "C:/Users/Diego/Desktop/project1/data/directory/directory-varietal.json" failed (3: The system cannot find the path specified), client: 127.0.0.1, server: localhost, request: "GET /project1/data/directory/directory-varietal.json HTTP/1.1", host: "localhost:8081", referrer: "http://localhost:8080/project1/" 

किसी को मुझे बताओ कि रीडायरेक्ट/मार्ग के इस प्रकार से निपटने के लिए कर सकते हैं?

प्लस, क्या nginx से लॉग में फ़ीड प्रिंट करने का कोई तरीका है? एक कमांड print_entry या समान की तरह?

धन्यवाद!

संपादित करें: मैं इस, लेकिन कोई परिणाम की कोशिश की है ... https://serverfault.com/questions/208656/routing-to-various-node-js-servers-on-same-machine

संपादित करें: ठीक है कुछ सुधार, मैंने पाया कि शायद क्वेरी स्थान की बात है। इस ब्लॉक के साथ और .json फ़ाइल का अनुरोध करने से यह वास्तव में बोतल सर्वर से पूछताछ करता है।

location ~* \.(json)$ { 
    proxy_pass http://localhost:8081; 
} 

संपादित करें: हाँ! मुझे एक समाधान मिला ... यह पता चला कि यह स्थान में परिभाषित पथ के साथ एक समस्या थी। आत्म करने के लिए नोट: वैसे भी

server { 
    listen  8080; 
    server_name localhost; 
    root /Users/Diego/Desktop; 

    location/{ 
     index index.html index.htm; 
    } 

    location ~* /data/ { 
     proxy_pass http://localhost:8081; 
    } 
} 

अगर किसी को भी एक बेहतर समाधान है या कोई सुझाव अधिक तो स्वागत करते योगदान करने के लिए है: सर्वर के लिए http://wiki.nginx.org/HttpCoreModule#location

नए कोड: ध्यान से मैनुअल पढ़ें।

+0

सुनने के लिए खुशी हुई कि आपने इसे हल किया - और समाधान पोस्ट करने के लिए वापस आने के लिए धन्यवाद! –

+0

@ डिघिटो, कृपया अपने अपडेट को उचित उत्तर के रूप में पोस्ट करें। अपने प्रश्न का उत्तर देना स्वीकार्य है। – Rod

+0

धन्यवाद @ रोड, किया गया। – Dieghito

उत्तर

3

संपादित करें: हाँ! मुझे एक समाधान मिला ... यह पता चला कि यह स्थान में परिभाषित पथ के साथ एक समस्या थी। आत्म करने के लिए नोट: वैसे भी

server { 
    listen  8080; 
    server_name localhost; 
    root /Users/Diego/Desktop; 

    location/{ 
    index index.html index.htm; 
    } 

    location ~* /data/ { 
    proxy_pass http://localhost:8081; 
    } 
} 

अगर किसी को भी एक बेहतर समाधान है या कोई सुझाव अधिक तो स्वागत करते योगदान करने के लिए है: सर्वर के लिए http://wiki.nginx.org/HttpCoreModule#location

नए कोड: ध्यान से मैनुअल पढ़ें।

+1

यहां यह काम करता है। आपका समाधान nginx 'स्थान ~ */डेटा /' ब्लॉक में '~ *' जोड़ता है। मूल 'स्थान/डेटा /' क्वेरी के _beginning_ पर शाब्दिक तारों से मेल खाता है। '~' जोड़ना नियमित अभिव्यक्तियों का उपयोग करता है, और '*' केस असंवेदनशील जोड़ता है। यह आवश्यक था क्योंकि '/ data /' 'GET/project1/data/directory/directory-varietal.json' की शुरुआत से मेल नहीं खाएगा, लेकिन regex को कोई समस्या नहीं है। – here

+0

हां वास्तव में मैंने इस अनुभव से क्या सीखा! वास्तव में मुझे कई और नियम जोड़ना पड़ा और मैंने इस सिद्धांत का पालन किया। आपकी टिप्पणी और स्पष्टीकरण के लिए धन्यवाद! – Dieghito

+0

यह जांचने लायक है कि आपको proxy_pass में पोर्ट नंबर के बाद पीछे पीछे स्लैश की आवश्यकता है या नहीं। थोड़ी देर के लिए यह हमारे लिए थोड़ा निराशाजनक था! –

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