![无法卷曲。 curl:(7)无法连接...连接被拒绝](https://linux22.com/image/641548/%E6%97%A0%E6%B3%95%E5%8D%B7%E6%9B%B2%E3%80%82%20curl%EF%BC%9A%EF%BC%887%EF%BC%89%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5...%E8%BF%9E%E6%8E%A5%E8%A2%AB%E6%8B%92%E7%BB%9D.png)
我无法使用外部 EC2 IP 地址来 curl 我安装的某个软件,但如果我使用 localhost:5000(或 127.0.0.1:5000)来 curl,它就可以正常工作。任何见解都将不胜感激。
我已经安装了以下 3 项:
- Elasticsearch,端口 9200 => 我可以使用内部和外部 IP 进行 curl
- Jenkins,端口 8080 => 我可以使用内部和外部 IP 进行 curl
- Python Flask 应用程序,端口 5000 => 我无法使用外部 IP 进行 curl。内部 IP 工作正常
使用外部 IP 地址,我可以卷曲前两项,但不能卷曲 python flask 应用程序。
下面是错误信息。我将真实 IP 地址替换为“external_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 也遇到了同样的结果。
有任何想法吗?
答案1
Flask 应用默认只监听本地接口,如果你想让你的应用在外部地址可用,请以如下方式启动它app.run(host='0.0.0.0')