Networking
埠轉發問題,特別是 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
但是,該埠在伺服器的 localhost 上是打開的
myserver~$ nmap localhost PORT STATE SERVICE 22/tcp open ssh 3000/tcp open ppp 5000/tcp open upnp 5432/tcp open postgresql
我認為這是 iptables 的某種問題(我大多不熟悉),但我嘗試在 port 上執行 express.js 伺服器(我已經在 port 上執行了一個
3000
)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 服務預設轉發。任何幫助表示讚賞!
假設您使用的是內置於 HTTP 伺服器的 Flasks,那麼這在Flask 文件中進行了解釋(向下滾動到 Externally Visible Server):
如果您執行伺服器,您會注意到伺服器只能從您自己的電腦訪問,而不能從網路中的任何其他電腦訪問。這是預設設置,因為在調試模式下,應用程序的使用者可以在您的電腦上執行任意 Python 程式碼。
如果您禁用了調試器或信任網路上的使用者,您只需在命令行中添加 –host=0.0.0.0 即可使伺服器公開可用:
> > 燒瓶執行–host=0.0.0.0 > > >
這告訴您的作業系統偵聽所有公共 IP。
nmap
您機器上的輸出myserver
顯示埠 5000 為打開的,因為您使用nmap localhost
了 ,它掃描本地主機上打開的埠,即 127.0.0.1,而不是 192.168.xx