首页 > 解决方案 > 即使在防火墙 Ubuntu 18 上启用端口 8000 也无法启用

问题描述

我在使用 ubuntu 18 进入数字海洋时遇到了一个奇怪的行为,我刚刚创建了一个 droplet 并没有使用 DO 防火墙,而是尝试将端口 8000 启用到服务器中,如下所示:

sudo ufw allow 8000/tcp

当我检查我的端口规则时它没问题,我的意思是它真的是我需要的,还有更多(因为我还添加了 udp)

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
80/udp                     ALLOW       Anywhere
443/udp                    ALLOW       Anywhere
8000/tcp                   ALLOW       Anywhere
8000/udp                   ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
80/udp (v6)                ALLOW       Anywhere (v6)
443/udp (v6)               ALLOW       Anywhere (v6)
8000/tcp (v6)              ALLOW       Anywhere (v6)
8000/udp (v6)              ALLOW       Anywhere (v6)

当我使用端口 8000 在服务器中运行烧瓶服务时,如下所示:

FLASK_APP=app.py flask run --host=127.0.0.1 --port=8000

我可以在服务器内部得到响应,例如:

curl 127.0.0.1:8000

但是当我尝试在站点外做同样的事情时,我被拒绝连接,例如:

curl IPSERVER:8000

回复:

curl: (7) Failed to connect to IPSERVER port 8000: Connection refused

我还使用此服务检查端口状态:https: //www.yougetsignal.com/tools/open-ports/

它说端口 8000 已关闭,但我启用了它,并且 DO 上没有防火墙(我有一个,但我删除了以进行测试,但它仍然无法正常工作)

有谁知道可能是什么?Ubuntu 18 有另一个地方可以启用它吗?在进行这些更改之前我应该​​重新启动服务器吗?

标签: pythonflasktcpubuntu-18.04digital-ocean

解决方案


你需要调用你的脚本;

--host=<your public ip>如果您只想绑定到指定的地址。

--host=0.0.0.0绑定到所有可用地址。

--host=127.0.0.1只会绑定到环回地址。

快速入门文档状态;

外部可见服务器

如果您运行服务器,您会注意到服务器只能从您自己的计算机访问,而不能从网络中的任何其他计算机访问。这是默认设置,因为在调试模式下,应用程序的用户可以在您的计算机上执行任意 Python 代码。

如果您禁用了调试器或信任网络上的用户,则只需在命令行中添加 --host=0.0.0.0 即可使服务器公开可用:

$烧瓶运行--host=0.0.0.0

这告诉您的操作系统侦听所有公共 IP。


推荐阅读