В настоящее время у меня есть одно приложение 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
. Надеюсь, это кому-нибудь поможет.