【Flask】在Flask中配置ssl证书,将http升级为https,并且使用Blueprint添加子域名

之前做比赛的时候,微信小程序要求只有https协议的网页服务才能访问,但是比赛期间没有时间升级https,只能硬着头皮用servlet做后端进行数据交互。现在闲下来了,回头填一下比赛留下的坑。
本篇文章主要记录了Flask如何配置ssl证书,使用https协议进行网页搭建。

前言

之前不是走网页方向的,所以对这些了解不是很了解。但是做比赛的时候我做了一部分的服务器开发,所以慢慢就对这个方向有些感兴趣了。
做比赛的时候问过学长https配置的事情,学长让我配置tomcat的ssl证书,但是tomcat是Javaweb的容器,而Flask是Pythonweb的容器,所以要想让Flask搭建的服务运行在https协议上,还是要让SSL证书配置到Flask中。

下面开始讲解具体怎么配置:

申请SSL证书

我租的服务器用的是阿里云,所以后来从域名到ssl证书申请都是在阿里云一家买的。ssl证书有免费的,可以直接在阿里云中搜索“SSL证书”:
在这里插入图片描述
然后就可以购买免费的SSL证书了:
在这里插入图片描述
购买之后,要等证书签发下来才可以使用,等证书签发成功,把证书下载下来(右边有个下载按钮):
在这里插入图片描述
下载尽量选择***.key***.pem格式的证书。tomcat的证书格式就不是这个格式,我下载选择的是其他
在这里插入图片描述
这样就把所需要的SSL证书下载下来了,将两个证书上传到服务器上。

在Flask进行配置

这一步倒是蛮简单的,直接看代码吧:

from flask import Flask
app = Flask(__name__)    

@app.route('/')
def index():
    return "这是首页"

if __name__=="__main__":
    app.run('0.0.0.0', debug=True, port=11000, ssl_context=('path/xxxx.pem', 'path/xxxx.key')) 

记得在服务器设置的防火墙中打开11000端口。
打开网页:
在这里插入图片描述
很成功!你也可以尝试将11000端口换成443端口,这样就可以直接通过域名进行访问了,不需要再加上后面的端口号。

Flask使用子域名

给子域名添加DNS解析

在不同云平台都可以直接设置域名解析,以阿里云为例:在这里插入图片描述

代码

from flask import Flask,Blueprint

# 这里需要对蓝图进行template和static文件夹的配置,不然访问子域名会找不到静态文件夹,返回404
api=Blueprint('api',__name__,subdomain='api',template_folder='templates',static_folder='static')    

#这里改成api.route('/')而不是app.route('/')
@api.route('/login')
def index():
    return "这是api的首页"

if __name__=="__main__":
    app=Flask(__name__)
    app.register_blueprint(api,subdomain='api')
    app.config.update({'SERVER_NAME':'lhystrive.com:11000'})
    app.run('0.0.0.0', debug=True, port=11000) 

通过添加的几行代码,实现路由转发的功能,这样就能通过http://api.lhystrive.com:11000来访问网站了。同样,在app.run()中加入你的ssl_content(注意,这里使用你的子域名生成的证书才可以,不能用原来域名的证书,你需要再去ssl证书生成界面生成你的子域名ssl证书),就可以通过https协议和你的子域名访问网站了。

后记:不知道为什么,使用https+子域名的时候不能监听使用443端口,使用http+子域名的时候不能监听使用80端口,这个bug只有在使用子域名中会出现,很迷,不过换成其他端口都可以正常访问(前提是其他端口的防火墙记得打开),比如说10000、11000等等。

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值