2015-09-28 9 views
5

をリセットしました。私は、HTTPからHTTPSにすべてのURLをリダイレクトしたいが、私は、このエラーが生じています:私は直接アドレスHTTPSを入力した場合フラスコ-Pythonのリダイレクトは、私は新しいフラスコのユーザーと私は問題がある

#! /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) 

The connection was reset

は、これは私のフラスココードです/ /192.168.42.186:5000それは動作だけHTTPとFOのない

感謝あなたに助けてください。

答えて

1

ssl_contextWerkzung(Flaskのデフォルトサーバー)を使用することはできません。これを可能にする機能は、2014年に提案され、却下されました:auto http to https redirect;引用:

That requires running another HTTP server. Werkzeug is not capable of that and IMO it's out of scope. run_simple should only be used for development anyway.

だから何が起こっているのか、あなたのフラスコのアプリケーションであることはssl_contextを渡すといくつかの他の変数、下run_simple呼び出します。この変数の唯一の存在が唯一HTTPSスキーマを使用してWerkzungホストを作るためSSLifyは、限り、あなたはssl_contextを使用すると、あなたのルーティングには影響を与えません。 httpからhttpsにリダイレクトを取得するには、httpでリスニングとhttpsにリダイレクトするか、簡単にリダイレクトすることができ、他の、より高度なサーバーに移行、別のサーバをセットアップするのいずれかが必要です。

私は、Apacheやgunicornに移行することをお勧めします。 Flaskは展開に関する包括的な説明を提供しています:Deployment Options。内蔵のフラスコ(Werkzung)のサーバはフラスコの書き込みの作者として、生産には適していないことに注意してください:

While lightweight and easy to use, Flask’s built-in server is not suitable for production as it doesn’t scale well and by default serves only one request at a time.

あなたが80でリスニング、VirtualHostのルールを使用して、すべてのHTTP要求をリダイレクトする可能性のApacheを使用する:

<VirtualHost *:80> 
    ServerName mysite.example.com 
    DocumentRoot /usr/local/apache2/htdocs 
    Redirect /secure https://mysite.example.com/secure 
</VirtualHost> 

Redirect Request to SSL Apacheのwikiにこれに関する詳細を参照してください。

関連する問題