flask 设置https请求 访问flask服务器

时间:2023-03-09 06:02:36
flask  设置https请求 访问flask服务器

学习过程中想要学教程中一样,做个假的微信公众号推送,不过去了微信开发文档怎么一直说需要https的请求(教学中没有说需要https,一直是http)

但是我的服务器只能使用http请求访问,如果硬是要在url中添加https 则会显示没有这个网站

于是我就想法让https请求也能请求到我的服务器域名上

我的域名是在阿里云买的,所以我就直接在阿里云上购买了证书,购买使用的是免费的1年证书

流程如下

flask  设置https请求 访问flask服务器

购买之后显示,但是还没有绑定域名,所以需要申请证书绑定这个域名

flask  设置https请求 访问flask服务器

点击申请,根据弹出的页面进行一个填写    我买的域名是 www.zengyimin.xyz

flask  设置https请求 访问flask服务器

根据下一步不断填写信息,等待审核,出现如下画面表示绑定域名成功

flask  设置https请求 访问flask服务器

点击下载 ,会下载一个压缩包

包名是绑定的域名

包中含有pem和key 证书和密匙,解压

接下来在放置 nginx 的服务器上进行操作 ,进入nginx的配置目录 (我是ubuntu)

cd /etc/nginx

该目录新建一个文件夹 放置证书和key

mkdir cert

将解压的文件上传至该文件夹

flask  设置https请求 访问flask服务器

进入nginx的配置文件 (我的nginx版本不同,有些操作和你们不同,以下我的个人讲解你们看看就好 )

flask  设置https请求 访问flask服务器

其中nginx.conf 是全部的配置文件集合, sites-acailable 和 siter-enabled  文件夹含有一些服务器的配置

如果你在sites中配置完成,启动nginx 时                   nginx会带上nginx.conf 配置文件启动,配置文件会include导入 sites 中的配置文文件

flask  设置https请求 访问flask服务器

同时sites 中的文件貌似是镜像文件? 更改一个另一个也会变

我的配置文件 进入  sites-enabled         vim更改配置文件 default

flask  设置https请求 访问flask服务器

这是我原本 http 80 端口的server服务配置         http不需要证书,所以不需要证书设置

flask  设置https请求 访问flask服务器

https 443 的配置 ,在该文件中添加一个 server 服务

flask  设置https请求 访问flask服务器

重启ngxin

service nginx restart

可以尝试在url中使用https请求nginx绑定的域名(我是一台机,其实就是flask服务器绑定的域名)了

免费证书会在google浏览器访问时提示有问题,所以需要证书还是购买有服务的比较好

http://www.zengyimin.xyz/api/v1.0/log

https://www.zengyimin.xyz/api/v1.0/log

flask  设置https请求 访问flask服务器flask  设置https请求 访问flask服务器

都是一样的访问,不过http和https的请求都能请求,区别也不大...

除非用户输入http请求会自动跳转https的请求

所以我个人的最终方案

# 所有的往http80端口的请求都会被 rewrite 进行一个拦截 重定向 将http 请求改为https  

server {                                
listen 80;
server_name www.zengyimin.xyz;
rewrite ^(.*)$ https://$host$1 permanent;      # <----------------- 重点 这是重定向 location / {
index index.html index.htm;
}
}

# 这是新增的 https 的server
server {
listen 443;
server_name www.zengyimin.xyz;
ssl on;                          
root html;
index index.html index.htm;
ssl_certificate cert/2568867_www.zengyimin.xyz.pem;      # 证书
ssl_certificate_key cert/2568867_www.zengyimin.xyz.key;    # 密匙
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on; location / {
proxy_pass http://127.0.0.1:5001;            # https请求转发到服务器ip地址
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme; }
}

flask  设置https请求 访问flask服务器

最终所有前往nginx服务器的请求都会被重定向到https请求

https://help.aliyun.com/document_detail/98728.html?spm=5176.2020520163.0.0.7bb9d5OKd5OKj5

https://lufficc.com/blog/configure-nginx-as-a-web-server