Flask 存在端口转发问题,但express.js 没有

Flask 存在端口转发问题,但express.js 没有

我有一个在本地运行的服务器(Arch Linux),上面有几个服务,我想添加一个在不同端口上运行的新 python 服务(Flask)。在本地,服务器正在 上运行192.168.x.x,我已经可以访问当前在其上运行的所有服务。我在 port 上启动了 Flask 服务器5000,但是在我的笔记本电脑上运行 nmap 显示该端口仍然关闭:

mylaptop~$ nmap 192.168.x.x

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5432/tcp open  postgresql

但是,该端口在服务器的本地主机上打开

myserver~$ nmap localhost

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5000/tcp open  upnp
5432/tcp open  postgresql

我认为这是 iptables 的某种问题(我对此不太熟悉),但我尝试3000在 port 上运行express.js 服务器(我已经在 port 上运行了一个)5000,并且果然它有效。

mylaptop~$ nmap 192.168.x.x

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5000/tcp open  upnp
5432/tcp open  postgresql

我仍然不确定如何转发 Flask 服务器,而且我很好奇为什么我的 ssh、express.js 和 postgres 服务默认被转发。任何帮助表示赞赏!

答案1

假设您使用的是内置于 HTTP 服务器的 Flask,那么这将在烧瓶文档(向下滚动到外部可见服务器):

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

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

烧瓶运行--host=0.0.0.0

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

nmap您计算机上的输出显示myserver端口 5000 打开,因为您使用了nmap localhost,它扫描本地主机上的打开端口,即 127.0.0.1,而不是 192.168.xx

相关内容