2013-02-27 17 views
6

पर http-server प्रारंभ करना मैं एक अमेज़ॅन ईसी 2 इंस्टेंस पर एक साधारण पायथन http-server सेटअप और एक्सेस करने का प्रयास कर रहा हूं। सर्वर स्थानीयहोस्ट के तहत स्थानीय रूप से काम करता है: 80, लेकिन मैं इसे ईसी 2 इंस्टेंस पर काम नहीं कर सकता।अमेज़ॅन ईसी 2

मैंने उदाहरण के लिए एक लोचदार आईपी जोड़ा, और कम से कम उस आईपी पर एसएसएच तक पहुंचने के लिए काम करता है।

मुझे लगता है कि समस्या यह है कि मैं गलत तरीके से HTTPServer के लिए SERVER_ADDRESS सेट कर रहा हूं है: Python HTTPServer documentation के बाद से मैं वास्तव में एक सुराग नहीं है, घर पर मैं रूटर कंप्यूटर के स्थानीय आईपी के HTTP अग्रेषित करने के लिए कॉन्फ़िगर किया गया, 1 9 2.168.1.xx

मैंने सोचा कि यह एक सुरक्षा समूह मुद्दा हो सकता है, इसलिए मैंने स्रोत 0.0.0.0/0 के साथ इनबाउंड HTTP जोड़ा (जिसे मैंने सोचा था कि सभी आने वाले आईपी को अनुमति देनी चाहिए) और किसी भी विकल्प के बिना पोर्ट 80 सेट करता है परिवर्तन।

इसके अतिरिक्त, मुझे लगता है कि पोर्ट 80 पर सुडो के तहत सर्वर स्क्रिप्ट चलाना एक संभावित सुरक्षा जोखिम है। 80 के बजाय 8080 की तरह किसी अन्य बंदरगाह के तहत अनुरोध अग्रेषित करने का कोई तरीका है?

+0

पायथन का HTTPServer शायद विशेषाधिकार नहीं छोड़ता है, इसलिए रूट के रूप में चलाने के लिए सुरक्षित नहीं है। आपका सेटअप वास्तव में क्या है? क्या आप ईसी 2 इंस्टेंस से अपने कंप्यूटर पर होस्ट किए गए HTTPServer तक पहुंचने का प्रयास कर रहे हैं? – tangrs

+0

क्या आप HTTPServer पर server_address तर्क के रूप में उपयोग कर रहे हैं? यदि आपके पास अन्य लोग इसका उपभोग करेंगे तो आपके पास इस सेवा/वेबसाइट के नजदीक nginx या apache जैसा होना चाहिए। साथ ही, [फ्लास्क] (http://flask.pocoo.org/) जैसी लाइब्रेरी का उपयोग करने पर विचार करें, यह आपके जीवन को आसान बना सकता है। – LoveGandhi

उत्तर

2

सुरक्षा बिंदु से एक नियमित http सर्वर के पीछे अपनी स्क्रिप्ट चलाने के लिए बेहतर हो सकता है।

यहाँ है कि आप करने के लिए शुरू कर दिया जाना चाहिए NginX के लिए एक विन्यास (Puth /etc/nginx/conf.d/ में इस फ़ाइल) है:

upstream myscript { 
    server localhost:8080; 
} 

server { 
    server_name _; 
    listen 80; 
    location =/{ 
     proxy_pass http://myscript; 
    } 
} 

इस सेटिंग में, आप पोर्ट 8080 (server_address = ('localhost', 8080) का उपयोग अपनी HTTPServer कॉन्फ़िगर करने के लिए पर अपनी स्क्रिप्ट चलाने अपने पायथन लिपि)।

तो जब कोई क्वेरी पोर्ट 80 पर nginx हिट करती है तो यह इसे स्थानीयहोस्ट पोर्ट 8080 पर अग्रेषित करती है जहां आपकी स्क्रिप्ट प्रभारी होती है।

2

सुरक्षा समूह के लिए, आप एक नियम बना सकते हैं जो पोर्ट 8080 ("कस्टोम टीसीपी नियम" करें, फिर पोर्ट रेंज के लिए 8080 डालें)।

ऐसा लगता है कि आपका HTTPServer लूपबैक के लिए बाध्यकारी है। मैं पता 0.0.0.0 (सभी इंटरफेस) पर सेट कर दूंगा, पोर्ट को 8080 पर सेट कर दूंगा, और अपने सुरक्षा समूह पर 8080 खोलूंगा।

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