博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask 设置https请求 访问flask服务器
阅读量:4963 次
发布时间:2019-06-12

本文共 2462 字,大约阅读时间需要 8 分钟。

 

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

 

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

 

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

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

流程如下

 

 

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

 

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

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

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

包名是绑定的域名

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

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

cd /etc/nginx 

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

mkdir cert

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

 

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

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

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

 

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

 

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

 

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

 

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

 

 

 重启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

 

 

 

都是一样的访问,不过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;                }}

 

 

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

 

 

 

 

转载于:https://www.cnblogs.com/zengxm/p/11255300.html

你可能感兴趣的文章
mysql upper() 函数
查看>>
mysql 子查询
查看>>
mysql 自联结
查看>>
mysql union 组合查询
查看>>
socket tcp
查看>>
spiral-matrix-ii &i 生成顺时针序列
查看>>
三大WEB服务器对比分析(apache ,lighttpd,nginx)
查看>>
关于STC单片机的内存管理
查看>>
1025: [SCOI2009]游戏 - BZOJ
查看>>
python set集合方法总结
查看>>
python考点
查看>>
dstat 监控时,无颜色显示
查看>>
CSS3阴影 box-shadow的使用和技巧总结
查看>>
DataMining--Python基础入门
查看>>
单片机复位电路
查看>>
php json_decode失败,返回null
查看>>
获取单选按钮选中的值
查看>>
oracle 分页
查看>>
助教学期总结
查看>>
绘制基本 图形之矩形与多边形
查看>>