服务公告
蓝易云cdn:docker教程nginx.conf配置
发布时间:2026-02-26 00:01
可以,而且这是 Docker 场景里最常见的用法之一:把 nginx.conf 挂载进容器,让 Nginx 做静态站点或反向代理。官方 nginx 镜像支持直接挂载配置文件到 /etc/nginx/nginx.conf,也支持把配置写进自定义镜像。(hub.docker.com)
Docker 场景下 nginx.conf 示例(反向代理版)🚀
适用场景:前端/业务请求通过 Nginx 转发到后端服务(如
app:8080)
worker_processes auto;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server_tokens off;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;
upstream backend_app {
server app:8080;
keepalive 32;
}
server {
listen 80;
server_name _;
client_max_body_size 20m;
location / {
proxy_pass http://backend_app;
proxy_http_version 1.1;
proxy_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_set_header Connection "";
proxy_connect_timeout 5s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
location /healthz {
return 200 "ok\n";
add_header Content-Type text/plain;
}
}
}
这份配置为什么这样写(核心点拆解)🧠
1)worker_processes auto;
让 Nginx 按 CPU 核心数自动分配 worker 进程,属于官方推荐常见写法,适合容器化部署。nginx.conf 是 Nginx 的主配置入口文件。(nginx.org)
2)upstream backend_app
定义后端服务池。这里写 app:8080,前提是你的 Docker 网络里有一个服务名叫 app 的容器(例如 Compose 服务名)。这样后期扩容时更容易改成多节点。
3)proxy_pass
Nginx 反向代理的关键指令。官方文档明确说明:在 location 中使用 proxy_pass 将请求转发给上游 HTTP 服务。(docs.nginx.com)
4)proxy_set_header ...
这几行是生产环境很重要的“透传头”:
Host:把原始域名传给后端,避免后端识别错站点X-Real-IP/X-Forwarded-For:保留客户端真实 IP(日志、风控、限流都靠它)X-Forwarded-Proto:告诉后端原请求是 HTTP 还是 HTTPS(后续你接证书时非常有用)
5)超时设置
proxy_connect_timeout / read_timeout / send_timeout 是为了避免后端卡死时前端一直挂着,提升稳定性和故障可控性。
Docker 启动示例(挂载配置文件)📦
docker run -d \
--name my-nginx \
-p 80:80 \
-v /data/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx
命令解释(逐段说明)
-d:后台运行容器--name my-nginx:给容器命名,方便运维管理-p 80:80:宿主机 80 端口映射到容器 80 端口-v ...:...:ro:把宿主机配置文件挂载到容器内,ro表示只读,降低误改风险nginx:使用官方 Nginx 镜像启动
官方镜像文档明确支持这种挂载方式,也支持先导出默认 nginx.conf 再改。(hub.docker.com)
上线前建议(很实用)✅
docker exec my-nginx nginx -t
docker exec my-nginx nginx -s reload
nginx -t:检查配置语法是否正确(先验收,再发布)nginx -s reload:平滑重载配置,不中断已有连接(前提是配置正确)
Nginx 官方文档说明了reload的工作方式:会先校验新配置,再平滑替换旧 worker。(nginx.org)
一句话结论
这份 nginx.conf 是 Docker 里可直接落地的标准反向代理模板:结构清晰、可扩展、适合后续接入静态资源、HTTPS、缓存与限流。先把基础代理跑稳,再叠加高级功能,效率最高。⚙️
如果你后面要我继续出一版 “Docker + Nginx 静态站点版 nginx.conf” 或 “支持 WebSocket / HTTPS / gzip / 缓存版”,我可以直接给你生产化模板。
已经是第一篇啦!
下一篇: 服务器路由命令有哪些常用技巧?