我目前有一个Flask应用程序,可在DigitalOcean Droplet上与Nginx,Gunicorn和Supervisor一起运行,并且我希望有一个登录页面,该页面具有指向各种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。我怎么能有一个静态页面链接到不同的flask应用和常规静态网站?
很抱歉,如果您的回答不完整,请多多关照!
更新:在启用了Nginx网站的文件中,我添加了以下内容:
location / {
root /home/ubuntu/landing;
index index.html index.htm;
}
在/ static位置之后,将location /
更改为location /flaskapp1
,并在我的着陆index.html中添加了/ flaskapp1的链接。但是,这不起作用(在flaskapp1上的引导程序模板中找不到文件),因为flaskapp1中的第一页路由到/ index,但是我希望URL为mydomain.me/flaskapp1/或mydomain .me / flaskapp1 / index,然后访问其他页面,例如:mydomain.me/flaskapp1/auth/login等。
更新:已解决。对于任何想知道的人,我都有一些register_blueprints,我只是在它们的开头添加了url_prefix=/flaskapp1
,所以对于以前是{{1} }我将其更改为/auth
。希望这对任何人都有帮助。