不能curl。 curl:(7)无法连接…拒绝连接

我不能curl使用外部EC2 IP地址我安装的软件之一,但如果我curl使用localhost:5000(或127.0.0.1:5000),它工作正常。 任何见解将不胜感激。

我已经安装了这3个项目:

  • Elasticsearch,端口9200 =>我可以使用内部和外部IPcurl
  • jenkins,端口8080 =>我可以使用内部和外部IPcurl
  • Python Flask应用程序,端口5000 =>我不能使用外部IPcurl。 内部IP工作正常

使用外部IP地址,我可以curl前两个项目,但不是python烧瓶应用程序。

这是下面的错误。 我用“external_ip”replace了真实的IP地址:

$ curl -v external_ip:5000 * Rebuilt URL to: external_ip:5000/ * Hostname was NOT found in DNS cache * Trying external_ip... * connect to external_ip port 5000 failed: Connection refused * Failed to connect to external_ip port 5000: Connection refused * Closing connection 0 curl: (7) Failed to connect to external_ip port 5000: Connection refused 

这是curl版本:

 $ curl --version curl 7.35.0 (x86_64-pc-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3 

这是操作系统版本:

 $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS" 

netstat显示所有端口正在被监听,但有问题的端口被链接到127.0.0.1。 我怎样才能得到这个映射到外部IP地址?

 $ sudo netstat -an | grep -E "5000|9200|8080" tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN tcp6 0 0 :::9200 :::* LISTEN tcp6 0 0 :::8080 :::* LISTEN 

顺便说一句,我遇到了使用Vagrant相同的结果。

有任何想法吗?

Flask应用程序默认只在本地接口上侦听,如果您希望您的应用程序在外部地址上可用,请以app.run(host='0.0.0.0')启动它