2013-02-27 12 views
6

Amazon EC2インスタンス上の単純なPython http-serverをセットアップしてアクセスしようとしています。 サーバはlocalhost:80の下でローカルに動作しますが、EC2インスタンスで動作するようにはできません。Amazon EC2上でhttp-serverを起動する

私はインスタンスにエラスティックIPを接続しています。少なくとも、そのIP上のsshにアクセスしています。

私はこの問題は、間違って、私はHTTPServerのためSERVER_ADDRESSを設定してるということだと思う: Python HTTPServer documentation 私は本当に手掛かりを持っていないので、家で私は、コンピュータのローカルIPへのHTTPリクエストを転送するようにルータを設定し192.168.1.xx

私はセキュリティグループの問題かもしれないと思ったので、インバウンドHTTPにソース0.0.0.0/0(すべての着信IPを許可する必要があると思います)を追加し、オプションなしでポート80を設定しました変化する。

さらに、私は、ポート・スクリプトでsudoの下でサーバー・スクリプトを実行するとセキュリティ上のリスクが発生する可能性があると考えています。 80の代わりに8080のような別のポートで要求を転送する方法はありますか?

+0

おそらくPythonのHTTPServerは権限を削除しないので、rootとして実行することは安全ではありません。あなたの設定は何ですか? EC2インスタンスからコンピュータにホストされているHTTPServerにアクセスしようとしていますか? – tangrs

+0

HTTPServerのserver_address引数として何を使用していますか?他の人がそれを消費している場合は、このサービス/ Webサイトの前にnginxやapacheのようなものがあるはずです。また、[フラスコ](http://flask.pocoo.org/)のようなライブラリを使うことを検討してください。 – LoveGandhi

答えて

2

セキュリティの観点からは、通常のhttpサーバーの背後にスクリプトを実行する方がよい場合があります。ここで

は、あなたが(/etc/nginx/conf.d/でこのファイルputh)始めるべきですNginXのための設定です。この設定で

upstream myscript { 
    server localhost:8080; 
} 

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

、あなたは(ポート8080でスクリプトを実行し、あなたの中にあなたのHTTPServerを構成するためにserver_address = ('localhost', 8080)を使用Pythonスクリプト)。

したがって、クエリがポート80でnginxにヒットした場合、スクリプトはそのスクリプトが担当するlocalhostポート8080に転送されます。

2

セキュリティグループでは、ポート8080を許可するルールを作成できます(「Custome TCP Rule」を実行し、ポート範囲に8080を設定します)。

HTTPServerがループバックにバインドされている可能性があります。私はアドレスを0.0.0.0(すべてのインターフェイス)に設定し、ポートを8080に設定し、セキュリティグループで8080を開きます。

関連する問題