Несколько колб приложений и статических сайтов на Nginx и gunicorn - PullRequest
0 голосов
/ 09 мая 2019

В настоящее время у меня есть одно приложение Flask, работающее с nginx, gunicorn и supervisor для капли DigitalOcean, и я бы предпочел, чтобы целевая страница содержала ссылки на различные приложения Flask или обычные статические веб-сайты. В моем текущем приложении Flask есть несколько страниц / маршрутов, например: example.me/auth/login и example.me/ или example.me/index. Мне бы хотелось, чтобы это выглядело как example.me/flaskapp/auth/login, example.me/flaskapp или example.me/flaskapp/index, аналогичное для других приложений / сайтов.

Пока у меня есть это в моем /etc/nginx/sites-enabled/my-current-app:

server {
    if ($host = mydomain.me) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    # listen on port 80 (http)
    listen 80;
    server_name mydomain.me;
    location / {
        # redirect any requests to the same URL but on https
        return 301 https://$host$request_uri;
    }


}
server {
    # listen on port 443 (https)
    listen 443 ssl;
    server_name mydomain.me;

    # location of the self-signed SSL certificate
    ssl_certificate /etc/letsencrypt/live/mydomain.me/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomain.me/privkey.pem; # managed by Certbot

    # write access and error logs to /var/log
    access_log /var/log/my-current-app_access.log;
    error_log /var/log/my-current-app-app_error.log;

    location / {
        # forward application requests to the gunicorn server
        proxy_pass http://localhost:8000;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /static {
        # handle static files directly, without forwarding to the application
        alias /home/ubuntu/my-current-app/app/static;
        expires 30d;
    }
}

А затем в моей конфигурации супервизора для моего приложения, /etc/supervisor/conf.d/my-current-app.conf:

[program:my-current-app]
command=/home/ubuntu/my-current-app/venv/bin/gunicorn -b localhost:8000 -w 3 --certfile cert.pem --keyfile key.pem my-current-app:app
directory=/home/ubuntu/my-current-app
user=ubuntu
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true

Я понимаю, что для работы с несколькими колбами мне понадобится другой процесс gunicorn с другим номером порта. Однако - я не уверен, что делать с nginx. Как бы я мог иметь одну статическую страницу, которая ссылалась бы на различные колб-приложения и обычные статические веб-сайты?

Я прошу прощения, если это звучит довольно широко, но я ценю любую помощь!

Обновление: В моем сайте nginx включен файл, который я добавил в:

location / {
    root /home/ubuntu/landing;
    index index.html index.htm;
}

После местоположения / static и изменив location / на location /flaskapp1, добавил ссылку на / flaskapp1 в моей лендинг index.html. Тем не менее, это не работает (я получаю файл, не найденный, в моем шаблоне начальной загрузки на flaskapp1), так как первая страница в flaskapp1 направляется в / index, но я хотел бы, чтобы URL был mydomain.me/flaskapp1/ или mydomain .me / flaskapp1 / index, а затем для других страниц, таких как: mydomain.me/flaskapp1/auth/login и т. д.

Обновление: решено. Для всех, кто интересуется, у меня было несколько register_blueprints, и я просто добавил url_prefix=/flaskapp1 в начале их всех, поэтому для чего-то, что было ранее /auth, я изменил его на /flaskapp1/auth. Надеюсь, это кому-нибудь поможет.

...