核心是确保容器网络互通、挂载自定义配置、正确设置代理头、支持HTTPS终止;需创建自定义bridge网络使Nginx通过服务名访问后端,挂载conf.d目录和SSL证书,配置proxy_pass及必要header,推荐用docker-compose统一管理多服务。

用 Docker 部署 Nginx 做反向代理,核心是让 Nginx 容器能正确识别并转发请求到其他业务容器(比如 Node.js、Python 或 Java 应用)。关键不在“装 Nginx”,而在于网络连通、配置挂载和头信息传递。下面分四步讲清楚实操要点。
确保容器间网络互通
Nginx 必须能通过服务名或容器名访问后端应用。推荐使用自定义桥接网络,避免依赖默认 bridge 网络的 IP 不稳定问题:
- 创建网络:
docker network create myapp-net - 启动后端容器时加入该网络,例如:
docker run --network myapp-net --name api-app -p 3000:3000 -d my-api-image - Nginx 配置中 upstream 的 server 就可以直接写
api-app:3000,无需查 IP
挂载自定义 Nginx 配置文件
不要直接改容器内默认配置,而是用 -v 挂载外部配置,便于维护和复用:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 在宿主机建目录:
mkdir -p /opt/nginx/conf.d - 写配置文件
/opt/nginx/conf.d/app.conf,内容示例:
upstream backend {
server api-app:3000;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
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;
}
}- 启动 Nginx 容器时挂载:
docker run -d --name nginx-proxy --network myapp-net -p 80:80 -v /opt/nginx/conf.d:/etc/nginx/conf.d:ro nginx
处理 HTTPS 和 SSL 终止
若需支持 HTTPS,证书文件也需挂载进容器,并在配置中启用:
- 把证书放到宿主机,如
/opt/nginx/ssl/example.pem和/opt/nginx/ssl/example.key - 在
app.conf中添加 443 监听段(注意同时保留 80 端口做重定向):
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.pem;
ssl_certificate_key /etc/nginx/ssl/example.key;
# … 其他 ssl 配置
location / {
proxy_pass http://backend;
# 同样要设 proxy_set_header
}
}- 启动命令加证书挂载:
-v /opt/nginx/ssl:/etc/nginx/ssl:ro
用 docker-compose 简化多容器协作
当有多个后端服务(如 admin、api、docs),用 docker-compose.yml 统一管理更可靠:
version: '3.8'
services:
nginx:
image: nginx:alpine
ports: ["80:80", "443:443"]
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d:ro
- ./nginx/ssl:/etc/nginx/ssl:ro
depends_on: [api, admin]
networks: [app-net]
<p>api:
image: my-api:latest
networks: [app-net]</p><p>admin:
image: my-admin:latest
networks: [app-net]</p><p>networks:
app-net:
driver: bridge- 所有服务自动加入同一网络,Nginx 可直接用服务名
api、admin作 upstream - 配置变更后只需
docker-compose up -d nginx重载,不用手动重启容器

















