Nginx Состояние обслуживания c Файлы, но не Flask Приложение - PullRequest
0 голосов
/ 06 августа 2020

На mydomain.com Nginx обслуживает stati c page index. html, что я и хочу. На mydomain.com/app я хочу, чтобы он обслуживал приложение Flask через gunicorn. Это не удается. В ответ на различные конфигурации, которые я пробовал, я получаю либо плохой шлюз, либо 404. Ниже приведена конфигурация, которая мне кажется наиболее разумной и возвращает 404 Not Found. Я подозреваю, что где-то мои каталоги не выстраиваются должным образом. Укажите, где я ошибся.

Мой индекс. html находится в / var / www/html.

My flask app api_app.py, коннектор файла коннектора. py и api_app.sock находятся в / var / www/app.

Маршрут приложения flask - это @ app.route ('/ app').

Рабочий каталог systemd api_app.service is / var / www/app.

Nginx mydomain.com config location '/' has root / var / www/html;

Nginx mydomain.com config location / app имеет proxy_pass http://unix: / var / www/app/api_app.sock;

/ etc / systemd / system / api_app.service:

    [Unit]
    Description=Gunicorn instance to serve One
    After=network.target
        
    [Service]
    User=root
    Group=www-data
    WorkingDirectory=/var/www/app
    Environment="PATH=/home/user/anaconda3/envs/appserver/bin"
    ExecStart=/home/user/anaconda3/envs/appserver/bin/gunicorn --workers 3 --bind unix:api_app.sock -m 007 connector:app
        
    [Install]
    WantedBy=multi-user.target

/ etc / nginx / sites-enabled / mydomain.com :

    server {
        location / {
            root /var/www/html;
        }
        location /app {
            include proxy_params;
                proxy_pass http://unix:/var/www/app/api_app.sock;
        }
    }

/ var / www/app/api_app.py:

    from flask import Flask
    app = Flask(__name__)
    @app.route("/app")
    def hello_world():
        return "Hello World"
    if __name__ == "__main__":
        app.run(host='0.0.0.0')

Здесь много похожих вопросов, но все они, похоже, связаны с использованием Flask для обслуживания состояния c страница, и это кажется немного не идеальным. В самом деле, собственное руководство Flask гласит: «В идеале ваш веб-сервер настроен на обслуживание [stati c content] для вас ...» Они также, похоже, запускают свое приложение в местоположении '/' и stati c контент в другом месте, тогда как я хочу наоборот. Помощь будет очень признательна!

...