6

我正在尝试在 Amazon EC2 实例上设置和访问一个简单的 Python http-server。服务器在 localhost:80 下本地工作,但我无法让它在 EC2 实例上工作。

我将一个弹性 IP 连接到实例,它至少可以访问该 IP 上的 ssh。

我认为问题在于我错误地设置了 HTTPServer 的 server_address: Python HTTPServer 文档 由于我真的不知道,我在家里配置了路由器以将 HTTP 请求转发到计算机的本地 IP,192.168.1。 xx

我认为这可能是一个安全组问题,所以我添加了源为 0.0.0.0/0 的入站 HTTP(我认为应该允许所有传入的 IP)并设置端口 80 而没有任何更改选项。

另外,我认为在 80 端口上运行 sudo 下的服务器脚本是一个潜在的安全风险。有没有办法在另一个端口(如 8080 而不是 80)下转发请求?

4

2 回答 2

3

对于安全组,您可以创建允许端口 8080 的规则(执行“自定义 TCP 规则”,然后将 8080 作为端口范围)。

听起来您的 HTTPServer 很可能绑定到环回。我会将地址设置为 0.0.0.0(所有接口),将端口设置为 8080,然后在您的安全组上打开 8080。

于 2013-03-11T21:10:05.363 回答
2

从安全的角度来看,在常规 http 服务器后面运行脚本可能会更好。

这是 NginX 的配置可以帮助您入门(将此文件放入 中/etc/nginx/conf.d/):

upstream myscript  {
  server localhost:8080;
}

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

在此设置中,您在端口 8080 上运行脚本(用于在您的 python 脚本server_address = ('localhost', 8080)中配置您的脚本)。HTTPServer

因此,当查询在端口 80 上命中 nginx 时,它会将其转发到您的脚本负责的本地主机端口 8080。

于 2013-02-28T11:00:07.703 回答