我正在尝试在 aws ec2 实例上部署我的简单 Flask 应用程序。然而我遇到了一些麻烦。
问题:
我设置了允许来自本地设备的 TCP 请求的入站设置。 (8080端口)
此外,我设置了允许来自本地设备的 http 请求的入站设置。
我使用
uWSGI
来部署flask应用程序。
当我向 ec2 实例发送 http 请求时,我得到响应,apache2 服务没有任何问题。
顺便说一句,我无法从端口 8080 获得响应。
这些是我尝试过的:
执行
uwsgi --http 127.0.0.1:8080 --master -w server:app
打开服务器。 server:app
是我的模块名称。
在 ec2 实例的终端执行
curl http://localhost:8080
,我得到包含我的 Flask 应用程序生成的 html 响应。
执行
sudo netstat -tlnp
以检查uWSGI
是否运行良好。结果是这样的:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:34935 0.0.0.0:* LISTEN 3214/uwsgi
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 310/systemd-resolve
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 3214/uwsgi
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 548/sshd: /usr/sbin
tcp6 0 0 :::80 :::* LISTEN 1421/apache2
tcp6 0 0 :::22 :::* LISTEN 548/sshd: /
tcping <instance ip address> 8080
,没有任何反应。最后,我粘贴我的 aws ec2 入站设置,以便对我的入站设置持怀疑态度的人。 (韩语意思是用户随意 TCP)
我执行命令
nc -l 8080
来检查ec2是否很好地获取了请求。
然后,netcat 注意到我的请求进展顺利。这说明应用层有问题。毕竟我发现了我的错误:
出现这个问题是因为“主机地址”。 我执行了
uwsgi --http 127.0.0.1:8080 --master -w server:app
来打开服务器。顺便说一句,127.0.0.1 是环回地址,这意味着 aws ec2 实例本身。