LinMinquan's Blog

Experience technology to change life

Python Flask Gunicorn Nginx CentOS Deploy SSL Https 多个App 部署

Centos 6,Python 2.7,阿里云ECS,

参考文章:

链接1:centos下通过gunicorn+nginx+supervisor部署Flask项目

链接2:Flask+Gunicorn+Nginx配置多个app

链接3:Virtual Hosts on nginx (CSC309)

我的需求是想在阿里云(Centos)上部署Flask的App,当然我想部署多个App在上面,另外我还会部署https。

链接1的文章写得特别好,但我需要部署https,这个是需要要nginx里配置的。我之前的部署方案也可以支持https,但据说会不稳定,方法是 Python Flask 支持 https Let’s Encrypt 。

nginx的坑。刚开始用nginx时,会发现它有很多个配置文件,网上不同的教程打开的配置文件都不一样,不同操作系统的配置文件目录也可能不同。真是非常崩溃。但后面也很好理解,它其实有一个主的配置文件,主的配置文件里可以包含其它的配置文件,这样它就把配置不同功能的配置文件分开了,比如说有专门配置ssl的配置文件ssl.conf。这样可以减少因为配置错误导致整体功能不可用的情况,单个配置文件错误的话至少只有相应的功能不可用。

其实你启动nginx后,在浏览器中进入nginx的默认页面,它就告诉你了它的配置文件在哪,Centos中是在 /etc/nginx/nginx.conf ,打开这个配置文件,你会注意到它里面有 include 这个词,这个是用于去包含其它目录下的配置文件。

配置https的证书我是在 sslforfree.com 上搞的,用的是Let’s Encrypt 的免费证书。

vi /etc/nginx/conf.d/ssl.conf

上面是我的配置。

测试时用 https://xx.example.com/test ,主要是指定证书,其它的ssl配置我都默认。我加了个ssl on 。

在做多app配置时我遇到一个问题,“ location / ”时可以,但“location /test”时不行(报404错误),解决这个办法请参考链接3。原因是nginx把 /test 这个发给Flask App,但我的Flask App里没有处理这个路由,所以报错了。


Share