Jetzt will ich den Server laufen sowohl mit http und https gibt es eine Möglichkeit, das zu tun ??
Ich hatte in letzter Zeit ein ähnliches Problem. Um zu testen, ob ein Proxy verwendet wird, nachdem http auf https umgeleitet wird, ich habe gerade angefangen zwei Prozesse auf verschiedenen Ports: einen für http, eine andere für https:
#!/usr/bin/env python3
"""Serve both http and https. Redirect http to https."""
from flask import Flask, abort, redirect, request # $ pip install flask
app = Flask(__name__)
@app.route('/')
def index():
if request.url.startswith('http://'):
return redirect(request.url.replace('http', 'https', 1)
.replace('080', '443', 1))
elif request.url.startswith('https://'):
return 'Hello HTTPS World!'
abort(500)
def https_app(**kwargs):
import ssl
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.load_cert_chain('server.crt', 'server.key')
app.run(ssl_context=context, **kwargs)
if __name__ == "__main__":
from multiprocessing import Process
kwargs = dict(host='localhost')
Process(target=https_app, kwargs=dict(kwargs, port=7443),
daemon=True).start()
app.run(port=7080, **kwargs)
Unnötig zu sagen, ist es nur für die Prüfung/Debugging-Zwecke.
Nun ich benutze Apache mit mod_wsgi zum Ausführen von Kolben, ich habe es geschafft, Apache zu konfigurieren, beide (http und https) auf verschiedenen Ports 80 und 443 zu verwenden es funktioniert gut mit https aber HTTP-Verbindung funktioniert nicht so lange wie ssl_context ist in Flask aktiviert –
Verwenden Sie nicht app.run, wenn Sie hinter einem echten Server ausgeführt werden. – Tritium21
was soll ich dann benutzen? –