python - 即使在防火墙 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 有另一个地方可以启用它吗?在进行这些更改之前我应该重新启动服务器吗?
解决方案
你需要调用你的脚本;
--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。
推荐阅读
- android - 如何在命令行环境中找到 sdk.dir 位置?
- docker - Docker 无法导入缓存清单
- mysql - 无法使用 Docker compose 将 SpringBoot 连接到 MySql
- linux - systemd 服务在其他服务启动之前和之后运行
- java - 带有 PriorityBlockingQueue 的 CompletableFuture
- c - 程序在 C 中读取多行时遇到问题
- c# - 如何查看面部是否匹配 EmguCV C#
- java - 使用 Cucumber JUnit5 引擎选择单个测试失败
- reactjs - 无法访问此站点 docker-compose
- android - Room @NonNull 主键和可打包操作