Не могу свернуться curl: (7) Не удалось подключиться... Соединение отказано

Я не могу свернуть одно из моих установленных программ, используя внешний IP-адрес EC2, но если я свернусь, используя localhost:5000 (или 127.0.0.1:5000), он работает нормально. Любые идеи будут оценены.

Я установил эти 3 пункта:

  • Elasticsearch, порт 9200        => Я могу скручиваться, используя внутренний и внешний IP
  • Jenkins, порт 8080                 => Я могу скручиваться, используя внутренний и внешний IP
  • Приложение Python Flask, порт 5000 => Я не могу скручиваться, используя внешний IP. Внутренний IP работает нормально

Используя внешний IP-адрес, я могу скручивать первые два элемента, но не приложение Python-флакон.

Вот ошибка ниже. Я заменил реальный 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')

Другие вопросы по тегам