Nginx和Gunicorn上的多个Flask应用和静态网站

时间:2019-05-08 21:44:00

标签: nginx flask gunicorn supervisord

我目前有一个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。希望这对任何人都有帮助。

0 个答案:

没有答案