2015-09-28 6 views
5

मैं एक नया फ्लास्क उपयोगकर्ता हूं और मुझे कोई समस्या है। मैं https करने के लिए http से सभी यूआरएल रीडायरेक्ट करना चाहते हैं, लेकिन मैं इस त्रुटि हो रहा है:https के लिए फ्लास्क-पायथन पुनर्निर्देशन कनेक्शन रीसेट किया गया था

The connection was reset

यह मेरा बोतल कोड है: अगर मैं प्रवेश

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

सीधे पता https://192.168.42.186:5000 यह काम करते हैं लेकिन साथ http केवल अपने नहीं

धन्यवाद के लिए अग्रिम में मुझे

उत्तर

1

आप ssl_context और Werkzung (फ्लास्क का डिफ़ॉल्ट सर्वर) का उपयोग करके ऐसा नहीं कर सकते हैं। इसे अनुमति देने की एक कार्यक्षमता 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.

तो क्या हो रहा है आपके बोतल आवेदन है run_simple कॉल के नीचे, ssl_context गुजर और कुछ अन्य चर। जब तक आप ssl_context का उपयोग करते हैं, तब तक एसएसएलआईफ़ाई को आपके रूटिंग पर कोई प्रभाव नहीं पड़ता है, क्योंकि इस चर की एकमात्र उपस्थिति केवल वेरकज़ंग होस्ट को https स्कीमा का उपयोग करके बनाती है। Http से https तक पुनर्निर्देशन प्राप्त करने के लिए, आपको या तो एक और सर्वर स्थापित करने, http को सुनने और https पर रीडायरेक्ट करने या अन्य, अधिक उन्नत सर्वर पर माइग्रेट करने की आवश्यकता है जो आसानी से पुनर्निर्देशन की अनुमति देता है।

मैं अपाचे या बंदूकधारक में माइग्रेट करने की सलाह देता हूं। फ्लास्क तैनाती पर व्यापक निर्देश प्रदान करता है: 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.

अपाचे का उपयोग करके आप VirtualHost नियम का उपयोग कर सभी http अनुरोध अनुप्रेषित सकता है, 80 पर सुन रहा:

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

Redirect Request to SSL अपाचे विकी पर इस पर और देखें।

संबंधित मुद्दे