Pap*_*aye 6 python ssl redirect flask
我是一个新的Flask用户,我有一个问题.我想将所有网址从http重定向到https,但我遇到此错误:
连接被重置
这是我的Flask代码:
#! /usr/bin/python
# -*- coding:utf-8 -*-
from flask import *
from OpenSSL import SSL
import psycopg2
import os
from datetime import timedelta
import sys
from flask_sslify import SSLify
reload(sys)
sys.setdefaultencoding('utf8')
db_conn = psycopg2.connect("dbname=billjobs host=192.168.42.96 port=50434 user=username password=password")
app = Flask(__name__)
db = db_conn.cursor()
app.permanent_session_lifetime = timedelta(seconds=900)
sslify = SSLify(app)
app.secret_key='\xatYK\x1ba\x1dz\xa6-D\x9d\x97\x83\xfa\xcf\xcbd\xfa\xfb\x1a|\x08\x1af'
context = ('ssl.crt','ssl.key')
@app.route('/')
def pre_log():
return render_template('index.html')
if __name__ == '__main__':
app.run(host="192.168.42.186", ssl_context=context, debug=False)
Run Code Online (Sandbox Code Playgroud)
如果我直接输入地址https://192.168.42.186:5000它可以正常工作,但只能使用http而不是
谢谢你提前帮助我
现在您不能使用ssl_contextand Werkzung(Flask 的默认服务器)来执行此操作。允许这样做的功能在 2014 年被提出并被拒绝:自动 http 到 https 重定向;引用:
\n\n\n这需要运行另一个 HTTP 服务器。Werkzeug 无法做到这一点,而且在我看来,它超出了范围。无论如何,run_simple 应该只用于开发。
\n
所以发生的事情是你的 Flask 应用程序run_simple在下面调用,传递ssl_context和一些其他变量。只要您使用 SSLify,就不会影响您的路由ssl_context,因为该变量的单独存在使得 Werkzung 主机仅使用https架构。要从 http 重定向到 https,您需要设置另一个服务器,侦听 http 并重定向到 https,或者迁移到其他更高级的服务器,以便轻松重定向。
我建议迁移到 Apache 或 Gunicorn。Flask 提供了有关部署的全面说明:部署选项。请记住,Flask (Werkzung) 的内置服务器不适合生产,正如 Flask 的作者所写:
\n\n\n\n\n虽然轻量且易于使用,但 Flask\xe2\x80\x99 的内置服务器不适合生产,因为它\xe2\x80\x99 的扩展性不好,并且默认情况下一次仅服务一个请求。
\n
使用 Apache,您可以使用 VirtualHost 规则重定向所有 http 请求,监听 80:
\n\n<VirtualHost *:80>\n ServerName mysite.example.com\n DocumentRoot /usr/local/apache2/htdocs\n Redirect /secure https://mysite.example.com/secure\n</VirtualHost>\nRun Code Online (Sandbox Code Playgroud)\n\n有关此内容的更多信息,请参阅将请求重定向到 SSL Apache wiki。
\n