Python 在Docker中使用Starlete实现SSL
我有一些应用程序,是用Python3.7编写的,运行在ASGI和Starlette上。我需要应用程序只接受HTTP请求 我已经通过docker compose打开了端口443和80,并添加了HTTPSRedirectMiddleware,以确保所有连接都将重定向到https docker composePython 在Docker中使用Starlete实现SSL,python,docker,ssl,docker-compose,starlette,Python,Docker,Ssl,Docker Compose,Starlette,我有一些应用程序,是用Python3.7编写的,运行在ASGI和Starlette上。我需要应用程序只接受HTTP请求 我已经通过docker compose打开了端口443和80,并添加了HTTPSRedirectMiddleware,以确保所有连接都将重定向到https docker compose version: '3.4' services: api: image: api stop_grace_period: 30s environment:
version: '3.4'
services:
api:
image: api
stop_grace_period: 30s
environment:
API_VERSION: $API_VERSION
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: on-failure
update_config:
delay: 1s
monitor: 10s
order: stop-first
parallelism: 1
failure_action: rollback
ports:
- 80:80
443:443
networks:
default:
driver: overlay
蟒蛇
def create_app():
app = Starlette()
app.add_exception_handler(HTTPException, error_handler)
app.add_middleware(ServerErrorMiddleware, handler=server_error_handler)
app.add_middleware(HTTPSRedirectMiddleware)
app.add_route("/", calculate, methods=["POST"])
return app
但当我试图通过本地主机上运行的容器上的邮递员发送POST请求时,我会收到无法连接的错误消息,在应用程序的日志中,我会收到错误消息
[WARNING] Invalid HTTP request received.
您需要为HTTPS指定SSL证书和私钥才能工作
$gunicorn--keyfile=./key.pem--certfile=./cert.pem-k uvicorn.workers.UvicornWorker示例:app
您可以在此处找到更多信息:
您需要指定SSL证书和专用密钥,HTTPS才能工作
$gunicorn--keyfile=./key.pem--certfile=./cert.pem-k uvicorn.workers.UvicornWorker示例:app
您可以在此处找到更多信息:
[WARNING] Invalid HTTP request received.