解决Nginx连接Gunicorn出现111: Connection refused错误
Nginx连接Gunicorn失败(111: Connection refused)- 本地127.0.0.1连接问题
遇到的错误:连接上游时失败 (111: Connection refused),场景为Nginx与Gunicorn分别通过Docker启动,尝试通过127.0.0.1进行连接。
关键配置细节
构建Nginx的Dockerfile
FROM nginx:latest EXPOSE 443 COPY nginx.conf /etc/nginx/nginx.conf
Nginx.conf配置
events {} http { client_max_body_size 1000M; server { server_name _; location / { proxy_pass http://127.0.0.1:8000/; proxy_set_header Host $host; } listen 443 ssl; ssl_certificate cert/name.crt; ssl_certificate_key cert/name.key; } }
启动Nginx的Docker命令
docker run -dit -p 0.0.0.0:443:443 -v /etc/cert/:/etc/nginx/cert <MY NGINX CONTAINER> nginx -g 'daemon off;'
启动Gunicorn服务器的Docker命令
docker run -dit -p 127.0.0.1:8000:8000 <My FASTAPI CONTAINER> gunicorn -w 3 -k uvicorn.workers.UvicornWorker -b 127.0.0.1:8000 server:app
其他补充信息
- FastAPI容器构建时已暴露8000端口
- 启动顺序为:先启动Nginx容器,再启动Gunicorn容器
- 使用Python requests库测试时,已设置
verify=False跳过SSL验证
解决方法
通过两个修改即可解决连接拒绝问题:
- 将Gunicorn绑定地址从
127.0.0.1:8000改为0.0.0.0:8000 - 在启动Nginx容器的命令中添加
--network="host"参数
修改后的Gunicorn启动命令:
docker run -dit -p 127.0.0.1:8000:8000 <My FASTAPI CONTAINER> gunicorn -w 3 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 server:app
修改后的Nginx启动命令:
docker run -dit --network="host" -v /etc/cert/:/etc/nginx/cert <MY NGINX CONTAINER> nginx -g 'daemon off;'
内容的提问来源于stack exchange,提问作者bb197
相关产品推荐
相关产品推荐

