2013-02-27 103 views
6

我正在嘗試設置和訪問Amazon EC2實例上的簡單Python http-server。 服務器在localhost下工作:80,但我無法讓它在EC2實例上工作。在Amazon EC2上啓動http-server

我連接了一個彈性IP到實例,它至少能夠訪問該IP上的ssh。

我認爲這個問題是我設置的服務器地址爲HttpServer的錯誤: Python HTTPServer documentation 因爲我真的沒有線索,我在家裏配置了路由器轉發HTTP請求到計算機的本地IP, 192.168.1.xx

我認爲這可能是一個安全組問題,所以我添加了入站HTTP與源0.0.0.0/0(我認爲應該允許所有傳入的IP)並設置端口80沒有任何選項更改。

此外,我認爲在端口80上運行sudo下的服務器腳本是潛在的安全風險。有什麼辦法可以將請求轉發到其他端口,如8080而不是80?

+0

Python的HTTPServer可能不會刪除權限,因此以root身份運行並不安全。你的設置到底是什麼?您是否嘗試從EC2實例訪問您的計算機上託管的HTTPServer? – tangrs 2013-02-27 22:26:03

+0

你使用什麼作爲HTTPServer的server_address參數?如果其他人會使用這個服務/網站,你應該有像nginx或apache這樣的服務/網站。另外,考慮使用像[flask](http://flask.pocoo.org/)這樣的庫它可以讓你的生活更輕鬆。 – LoveGandhi 2013-02-28 02:52:05

回答

2

從安全角度來看,在普通的http服務器後面運行腳本可能會更好。

這是應該讓你開始,對於NginX配置(北醫三院這個文件/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腳本您python腳本)。

所以當一個查詢在端口80上擊中nginx時,它會將其轉發到您的腳本負責的localhost端口8080。

2

對於安全組,您可以創建一個允許端口8080的規則(執行「Custome TCP Rule」,然後將端口範圍設置爲8080)。

聽起來您的HTTPServer可能會綁定到回送。我會將地址設置爲0.0.0.0(所有接口),將端口設置爲8080,並在安全組上打開8080。