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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41427568/article/details/101025193

之前做比赛的时候,微信小程序要求只有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在HHTP协议基础上添加子域名

给子域名添加DNS解析

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

代码

from flask import Flask,Blueprint

api=Blueprint('api',__name__,subdomain='api')    

#这里改成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来访问服务了。但是以上代码不能访问static文件夹中的资源,可以通过其他路由操作将static文件夹也加入路由规则。

猜你喜欢

转载自blog.csdn.net/qq_41427568/article/details/101025193