Как сделать несколько серверов на Flask на порте 80 для разных доменов?

Как сделать несколько серверов на Flask на порте 80 для разных доменов? P.S.: У меня сервер на Ubuntu 20.04


Ответы (1 шт):

Автор решения: wer310

Для запуска нескольких серверов Flask на порте 80 для разных доменов вам понадобится использовать несколько экземпляров приложения Flask и настроить проксирование запросов на соответствующие серверы. Вот основные шаги:

  1. Установите необходимые пакеты Flask:
$ pip install flask
  1. Создайте несколько файлов app.py для каждого сервера Flask. Каждый файл должен содержать отдельную конфигурацию для своего домена.

Например, создайте файлы app1.py и app2.py с следующим содержимым:

# app1.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'This is server 1'

if __name__ == '__main__':
    app.run()
# app2.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'This is server 2'

if __name__ == '__main__':
    app.run()
  1. Настройте веб-сервер (например, Nginx или Apache) для проксирования запросов на соответствующие серверы Flask. Это можно сделать с помощью настройки виртуальных хостов.

Например, для Nginx создайте два конфигурационных файла server1.conf и server2.conf в директории /etc/nginx/conf.d/:

# server1.conf
server {
    listen 80;
    server_name domain1.com;
    
    location / {
        proxy_pass http://127.0.0.1:5000;  # Проксируйте запросы на порт, на котором запущен первый сервер Flask
        proxy_set_header Host $host;
    }
}
# server2.conf
server {
    listen 80;
    server_name domain2.com;
    
    location / {
        proxy_pass http://127.0.0.1:5001;  # Проксируйте запросы на порт, на котором запущен второй сервер Flask
        proxy_set_header Host $host;
    }
}
  1. Перезапустите веб-сервер, чтобы применить изменения в конфигурации.

Теперь сервер Flask для domain1.com будет доступен по адресу http://domain1.com, а сервер Flask для domain2.com - по адресу http://domain2.com. Используйте соответствующие домены при настройке DNS-записей.

→ Ссылка