【flask+宝塔】我在云服务器上,想做一个https协议的“https://域名:端口号”这样的网站,最好是在宝塔面板上设置

我想要达到的结果

实现这个页面是为了满足微信小程序api要求:

  • 不能出现ip
  • 必须要是https协议

更详细的问题描述

  • 使用的是flask框架,现在能通过在宝塔上部署一个直接通过 “http://公网ip:端口号" 访问的页面
  • 域名已经解析到公网上,但是通过 ”http://域名:端口号“ 的方式也无法访问页面【会自动转成https协议,威森莫呢❓】

我的思路和尝试过的方法

我有个大概的概念:

  • https和http协议不同所以需要在宝塔(或者flask)上整一个ssl的证书
  • 宝塔上部署flask和直接运行python3 app.py有区别
  • 云服务器教程里说的‘进nginx/conf改配置’和‘【在宝塔界面配置ssl】'应该是两种不同的方法
  • 还有的说什么iis配置什么的,我感觉应该没那么复杂
尝试的方法

搜不同关键词总能出来不同的答案,大概试下来有这么几个感觉希望最大的(但是都失败了)

1.在flask里面直接配置ssl_context

  • 我看到至少两位答主说可以通过ssl_context这个参数解决,但是很遗憾、
  • 我觉得这应该是直接在flask上完成的(也就是跟宝塔面板无关),如果这个方法真的管用,是不是我应该一直保持这个程序在运行状态? 另外,如果我用域名访问它,是不是还要内网穿透什么的

app.run(debug=True, host='0.0.0.0', ssl_context=('your_ssl.pem', 'your_ssl.key'))

2.python+flask子域名访问设置

在方法1的基础上,加上了:

通过”给子域名添加DNS解析 + 子域名ssl证书申请+代码修改“的方法

#coding:utf8
#创建一个子域名
from flask import Blueprint
 
api = Blueprint('api',__name__,subdomain='api')
 
# attention1: 原来是app.route('/')
@api.route('/')
def index():
    return u'这个是api的首页'
 
 
@api.route("/login/")
def login():
    return u'我是登录页面'
 
 
if __name__="__main__":
    app = Flask(__name__)   
    # attention2:你的以及域名,比如bbaidu.com
    app.config['SERVER_NAME'] ='bbaidu.com'
    app.run('0.0.0.0', debug=True, port=8100, ssl_context=('your_path/XXXX.pem', 'your_path/XXXX.key'))  

[参考博主dyingstraw代码]

一些小问题

  1. 是否需要内网穿透

  2. 为什么http://域名会自动转为https,能不能在宝塔上实现访问http://域名:端口和IP:端口达到同样的效果

以上

我用nginx,我只知道nginx容易的要死。

参考一下:https://www.feiniaomy.com/post/159.html

首先要实现https你的方向没错就是先申请ssl证书,其次是否有重新部署上去证书,由于用的flask+宝塔,那你需要检查环境是否设置完整,以及考虑域名的生效时间,解析有没有问题

强制HTTPS不就行了,申请一个免费的HTTPS证书开起来就行

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632