Приложение Flask видно только для localhost - PullRequest
0 голосов
/ 24 августа 2018

Попытка разместить приложение python flask в Ubuntu 18.04 vps. Я использую 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 я получу:

Хост, кажется, не работает. Если это действительно так, но блокирует наши пинг-зонды, попробуй -Pn

Поэтому, когда я добавляю -Pn и выполняю: nmap -p 80 18.191.182.118 -Pn, я получаю:

Хост работает. ГОСУДАРСТВЕННАЯ СЛУЖБА ПОРТА 80 / tcp отфильтрованная http

Что-то не так с моим файлом конфигурации? Или любая другая идея, почему приложение не видно внешнему миру?

EDIT: Я настроил основной модуль Python, опция хоста установлена:

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

1 Ответ

0 голосов
/ 24 августа 2018

По умолчанию приложение фляги видно только для локального доступа.Вам нужно указать параметр хоста --host=0.0.0.0, чтобы сделать его видимым для другой сети.

Внешний видимый сервер

Если вы запустите сервер, вы заметите, что сервер доступен толькос вашего собственного компьютера, а не с любого другого в сети.Это значение по умолчанию, поскольку в режиме отладки пользователь приложения может выполнить произвольный код Python на вашем компьютере.

Если у вас отключен отладчик или вы доверяете пользователям вашей сети, вы можете просто сделать сервер общедоступным.добавив --host = 0.0.0.0 в командную строку:

flask run --host = 0.0.0.0

Это заставит вашу операционную систему прослушивать все публичные IP-адреса.

Проверьте это http://flask.pocoo.org/docs/1.0/quickstart/#quickstart

...