Я бы порекомендовал конфигурацию reverse proxy
для чего-то вроде этого.
Ваше приложение Flask будет прослушивать локальный хост на порту 8888 (например)
А затем Nginx будет передавать запросы на этот порт внутренне
Ниже приведена базовая c конфигурация для передачи входящих HTTP-запросов (порт 80) вашему flask приложению, внутренне прослушивающему порт 8888
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8888;
}
}
Другой вопрос - обслуживание приложения flask. uWSGI и Gunicorn - два отличных сервера wsgi, с которыми flask будет отлично работать.
EDIT: добавление ssl config. (Измените пути в соответствии с вашими потребностями)
server {
listen 443 ssl;
server_name www.example.com example.com;
ssl_certificate /etc/letsencrypt/live/example.com/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://127.0.0.1:8888;
}
}