我在端口号为162.74.90.100
的外部硬件上安装了服务器,我可以使用SSH Secure Shell软件访问其上的所有文件和终端。
现在我在现有服务器(即127.0.0.1:5000
)上运行一个Python-Flask服务器(162.74.90.100
),该服务器应该运行一个网站。
要访问该网站,我尝试在162.74.90.100/127.0.0.1:5000
等浏览器中运行IP地址但不起作用。
任何人都可以建议如何使用浏览器访问127.0.0.1:5000
?我被困住了,找不到任何相关文件。
答案 0 :(得分:3)
你不能,不能直接。通过在127.0.0.1(localhost)上运行,您显式不绑定到公共IP地址,并且对外界不可见。
您的选择是:
使用SSH port forwarding将流量从您自己的计算机重定向到该localhost端口;将-L 5000:localhost:5000
添加到ssh
命令行,然后访问http://localhost:5000
处的Flask服务器。如果您只能访问服务器,请使用此选项。
使用ngrok等第三方服务从公共主机隧道到Flask服务器。
使用在公共IP地址上提供服务的另一个Web服务器转发到localhost:5000的连接。请参阅Flask部署文档中的Proxy Setups。
重新启动Flask服务器以绑定到公共IP地址,而不是127.0.0.1。不建议这样做,因为与Flask捆绑在一起的开发Web服务器并不适合作为公共互联网的粗糙世界。您可以通过app.run()
host
参数来执行此操作:
app.run(host='162.74.90.100')
或(使用flask
命令行工具)使用--host
命令行参数:
flask run --host 162.74.90.100
绑定到您的公共IP地址,或使用0.0.0.0
绑定到服务器上的所有可用IP地址。这仅在您的服务器直接连接到Internet(不在路由器后面)并且防火墙允许连接到端口时才有效;否则你需要配置路由器和防火墙。
答案 1 :(得分:2)
您无法访问应用程序的原因是因为您没有从您需要访问它的界面(在您的情况下为162.74.90.100)中运行它。
由于您正在使用烧瓶应用程序,我假设您的运行代码看起来像这样......
if __name__ == '__main__':
app.run()
默认情况下,这会将您的应用程序与端口5000上的localhost(127.0.0.1)相关联。现在,要让应用程序在外部世界公开的端口5000上运行,您可以执行此操作....
if __name__ == '__main__':
app.run(host='162.74.90.100')
或者这......
if __name__ == '__main__':
app.run(host='0.0.0.0')
我建议后者在所有接口上运行应用程序,因此可以从外部世界访问。完成此更改后,您可以访问162.74.90.100:5000
的应用程序