Nginx配置运行python的uvicorn项目
项目代码
# main.pyfrom fastapiimportFastAPIimportuvicorn app=FastAPI()# 示例1:GET接口(无参数)@app.get("/hello")def hello():return{"message":"Hello FastAPI"}# 示例2:GET接口(带查询参数)@app.get("/user/{user_id}")def get_user(user_id: int, name: str=None):return{"user_id":user_id,"name":name}# 示例3:POST接口(带JSON参数)@app.post("/create-user")def create_user(user: dict):return{"code":200,"data":user,"msg":"创建成功"}if__name__=="__main__":# 启动服务:host=0.0.0.0 允许外部访问,port=8000uvicorn.run(app,host="0.0.0.0",port=8000)运行
E:\demo>uvicorn fs:app --host 0.0.0.0 --port 8000
配置nginx
定义 Uvicorn 后端服务(可扩展多节点)
upstream uvicorn_server{# Uvicorn 运行的地址和端口(必须和启动命令一致)server127.0.0.1:8000;# 可选:多节点负载均衡(如多 Uvicorn 实例)# server 127.0.0.1:8001;# server 127.0.0.1:8002;}server{listen80;server_name py.com;root"E:/demo";# 客户端请求体最大尺寸(适配文件上传,根据需求调整)client_max_body_size 100M;# 所有请求转发给 Uvicornlocation /{# 反向代理到 Uvicorn 服务proxy_pass http://uvicorn_server;# 传递真实客户端 IP 和 Hostproxy_set_header Host$host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto$scheme;# 超时配置(避免长连接断开)proxy_connect_timeout 60s;proxy_read_timeout 60s;proxy_send_timeout 60s;# 缓冲区配置(优化大请求)proxy_buffers1616k;proxy_buffer_size 32k;}}