Flask应用仅对本地主机可见

时间:2018-08-24 11:51:59

标签: python flask apache2 ubuntu-16.04

尝试在Ubuntu 18.04 vps上托管python flask应用程序。我使用的是Python 3.6版,而不是使用虚拟环境,因为该vps仅用于托管一个应用程序。

这是此应用程序的apache2配置文件的内容:

<VirtualHost *:80>
   ServerName 15.16.541.21
   WSGIScriptAlias / /var/www/psoftware-nis-app/Backend/flask-api/api.wsgi

   <Directory /var/www/psoftware-nis-app/Backend/flask-api>
      Order deny,allow
      Allow from all
   </Directory>   
</VirtualHost>

我提供的静态IP地址当然不是真实的,但是在conf中,它是托管此应用的计算机的真实静态IP地址。

卷曲http://localhost/api/test_endpoint时(从vps)得到有效响应。

但是当我从笔记本电脑卷曲http://15.16.541.21/api/test_endpoint时,我会得到:

  

连接超时

当我执行此操作时:nmap -p 80 15.16.541.21我得到:

  

主机似乎掉线了。如果确实启动,但阻止了我们的ping探测,   尝试-Pn

因此,当我添加-Pn并执行:nmap -p 80 18.191.182.118 -Pn时,我得到:

  

主机已启动。端口状态服务80 / tcp过滤的http

我的配置文件有问题吗?或其他任何想法,为什么该应用程序对外界不可见?

编辑: 我已经配置了主要的python模块,设置了主机选项:

if __name__ == '__main__': 
    app.run(host='0.0.0.0')

1 个答案:

答案 0 :(得分:-1)

默认情况下,flask应用仅对本地访问可见。您需要指定主机选项--host=0.0.0.0,以使其对其他网络可见。

  

外部可见服务器

     

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

     

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

     

烧瓶运行--host = 0.0.0.0

     

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

选中此http://flask.pocoo.org/docs/1.0/quickstart/#quickstart