首页 > 解决方案 > 如何通过 SSL 运行 Flask/Python3.x?

问题描述

当我加载页面时,浏览器显示“无法访问此站点”

我的代码:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST']) 
def route1():
  return f'--- request received ----'

if __name__ == "__main__":
    # https://www.name-of-my-domain.com
    app.run(port='8443', ssl_context=('./mydir/name-of-my-domain.com.crt', './mydir/private.key'))

我也试过:

from flask import Flask, request, jsonify
from werkzeug.serving import run_simple

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST']) 
def route1():
    return f'--- request received ----'

if __name__ == "__main__":
    # https://www.name-of-my-domain.com
    run_simple('https://www.name-of-my-domain.com/', 8443, app, ssl_context=('./mydir/name-of-my-domain.com.crt', './mydir/private.key'))

并且:

import ssl
# ... as before for app ...
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.load_cert_chain('./mydir/name-of-my-domain.com.crt', './mydir/private.key')
run_simple('https://www.name-of-my-domain.com/', 8443, app, ssl_context=context)

但是对于最后两个,当我运行文件时出现错误:

File "bot.py", line 38, in <module>
    run_simple('https://www.name-of-my-domain.com', 8443, app, ssl_context=context)
  File "/usr/local/lib/python3.6/site-packages/werkzeug/serving.py", line 1052, in run_simple
    inner()
  File "/usr/local/lib/python3.6/site-packages/werkzeug/serving.py", line 1005, in inner
    fd=fd,
  File "/usr/local/lib/python3.6/site-packages/werkzeug/serving.py", line 863, in make_server
    host, port, app, request_handler, passthrough_errors, ssl_context, fd=fd
  File "/usr/local/lib/python3.6/site-packages/werkzeug/serving.py", line 740, in __init__
    HTTPServer.__init__(self, server_address, handler)
  File "/usr/lib64/python3.6/socketserver.py", line 456, in __init__
    self.server_bind()
  File "/usr/lib64/python3.6/http/server.py", line 136, in server_bind
    socketserver.TCPServer.server_bind(self)
  File "/usr/lib64/python3.6/socketserver.py", line 470, in server_bind
    self.socket.bind(self.server_address)
socket.gaierror: [Errno -2] Name or service not known

标签: pythonpython-3.xsslflask

解决方案


我将其排序为主机'0.0.0.0',它适用于所有三个代码示例(但 '127.0.0.1' 不起作用)


推荐阅读