连接到另一台服务器上运行的本地服务器

时间:2014-12-23 12:04:10

标签: python web

我在端口号为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?我被困住了,找不到任何相关文件。

2 个答案:

答案 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

的应用程序