gpt4 book ai didi

python - 用于 uvicorn 的 unix 套接字上的 Nginx 反向代理不起作用

转载 作者:行者123 更新时间:2023-12-03 15:43:50 25 4
gpt4 key购买 nike

文件 :

# main.py:
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
return {"Hello": "World"}

-
# nginx.conf:
events {
worker_connections 128;
}
http{
server {
listen 0.0.0.0:8080;
location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/uvi.sock;
}
}
}

-
# Dockerfile
FROM python:3

COPY main.py .

RUN apt-get -y update && apt-get install -y htop tmux vim nginx

RUN pip install fastapi uvicorn

COPY nginx.conf /etc/nginx/

设置 :
docker build -t nginx-uvicorn:latest .
docker run -it --entrypoint=/bin/bash --name nginx-uvicorn -p 80:8080 nginx-uvicorn:latest

像往常一样启动uvicorn :
$ uvicorn --host 0.0.0.0 --port 8080 main:app

作品 - 我可以访问 http://127.0.0.1/从我的浏览器。

在 nginx 后面启动 uvicorn :
$ service nginx start
[ ok ] Starting nginx: nginx.

$ uvicorn main:app --uds /tmp/uvi.sock
INFO: Started server process [40]
INFO: Uvicorn running on unix socket /tmp/uvi.sock (Press CTRL+C to quit)
INFO: Waiting for application startup.
INFO: Application startup complete.

如果我现在请求 http://127.0.0.1/然后:
  • Nginx:响应 502 Bad Gateway
  • uvicorn:回复 WARNING: Invalid HTTP request received.

  • 因此建立了连接,但配置有问题。

    有任何想法吗?

    最佳答案

    您正在使用 uwsgi nginx的模块。 Uvicorn 公开了 asgi API。因此,您应该使用“反向代理”配置而不是 uwsgi配置。

    您可以在 uvicorn 文档中获得更多信息:https://www.uvicorn.org/deployment/#running-behind-nginx (见 proxy_pass 行)

    关于python - 用于 uvicorn 的 unix 套接字上的 Nginx 反向代理不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59307024/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com