Files
life-echo/docs/nginx-config-guide.md

110 lines
2.3 KiB
Markdown
Raw Normal View History

# Nginx 配置调整指南
## 问题说明
根据 `docker-compose.yml` 配置:
- **服务名**`api`
- **容器名**`life-echo-api-prod`
- **网络名**`life-echo-network`
- **端口映射**`8000:8000`
原配置中使用的是 `lifecho-api:8000`,需要根据实际部署方式调整。
## 配置方案
### 方案 1Nginx 在同一个 Docker Compose 网络中(推荐)
如果 nginx 容器也在 `life-echo-network` 网络中,使用**服务名**
```nginx
upstream lifecho_api_backend {
server api:8000;
}
```
**如何实现**
1. 在 nginx 的 docker-compose 配置中添加网络:
```yaml
services:
nginx:
# ... 其他配置
networks:
- life-echo-network
networks:
life-echo-network:
external: true # 使用已存在的网络
```
### 方案 2Nginx 在外部容器但连接到同一网络
如果 nginx 容器连接到 `life-echo-network` 网络,可以使用**容器名**
```nginx
upstream lifecho_api_backend {
server life-echo-api-prod:8000;
}
```
**如何实现**
```bash
# 将 nginx 容器连接到网络
docker network connect life-echo-network <nginx-container-name>
```
### 方案 3Nginx 在主机上(通过端口映射)
如果 nginx 直接运行在主机上,使用**本地端口**
```nginx
upstream lifecho_api_backend {
server 127.0.0.1:8000;
}
```
这是最简单的方案,因为 `docker-compose.yml` 已经将容器的 8000 端口映射到主机的 8000 端口。
## 推荐配置
根据最常见的部署场景,**推荐使用方案 1服务名**,因为:
1. 更灵活,不依赖容器名
2. Docker Compose 会自动处理服务发现
3. 如果容器重启,服务名保持不变
## 验证配置
配置完成后,测试连接:
```bash
# 测试健康检查端点
curl https://lifecho.worldsplats.com/health
# 测试 API 端点
curl https://lifecho.worldsplats.com/api/your-endpoint
```
## 故障排查
如果连接失败,检查:
1. **网络连接**
```bash
# 检查容器是否在同一网络
docker network inspect life-echo-network
# 检查容器 IP
docker inspect life-echo-api-prod | grep IPAddress
```
2. **端口映射**
```bash
# 检查端口是否映射
docker ps | grep life-echo-api-prod
```
3. **Nginx 日志**
```bash
# 查看错误日志
tail -f /var/log/nginx/error.log
```