Skip to content

Repository files navigation

Nginx 反向代理 Docker 部署

这个项目提供了一个基于 Docker 的 Nginx 反向代理服务,用于将请求转发到不同的目标服务器。

功能

  • 将 HTTP 请求自动重定向到 HTTPS
  • /todo-api/* 路径下的请求代理到 https://todo.holdrop.com
  • /user-api/* 路径下的请求代理到 https://user.holdrop.com
  • 为每个请求添加自定义 Header X-Proxy-Custom-token
  • 其他路径返回 404 错误

目录结构

.
├── Dockerfile          # Docker 镜像构建文件
├── docker-compose.yml  # Docker Compose 配置文件
├── nginx.conf          # Nginx 配置文件
└── certs/              # SSL 证书目录 (需要自行创建并添加证书)
    ├── fullchain.cer   # 证书链文件
    └── runnngapi.top.key # 私钥文件

部署准备

  1. 确保你的服务器已安装 Docker 和 Docker Compose

  2. 克隆此仓库到你的服务器

  3. 创建证书目录并添加你的 SSL 证书:

mkdir -p certs
# 将你的证书文件复制到 certs 目录
cp /path/to/your/fullchain.cer certs/
cp /path/to/your/runnngapi.top.key certs/

部署步骤

  1. 构建并启动容器:
docker-compose up -d
  1. 检查容器是否正常运行:
docker-compose ps
  1. 查看日志:
docker-compose logs -f

维护

更新 Nginx 配置

  1. 修改 nginx.conf 文件
  2. 重新加载 Nginx 配置:
docker-compose exec nginx-proxy nginx -s reload

更新 SSL 证书

  1. 更新 certs 目录中的证书文件
  2. 重新加载 Nginx:
docker-compose exec nginx-proxy nginx -s reload

完全重启服务

docker-compose down
docker-compose up -d

常见问题排查

查看 Nginx 错误日志

docker-compose exec nginx-proxy cat /var/log/nginx/error.log

测试 Nginx 配置是否有语法错误

docker-compose exec nginx-proxy nginx -t

检查证书是否正确加载

docker-compose exec nginx-proxy nginx -T | grep ssl

安全注意事项

  • 确保你的 SSL 证书权限设置正确
  • 定期更新 Docker 镜像以获取安全补丁
  • 考虑添加 IP 限制或基本认证以增强安全性

性能优化

如果需要处理高流量,考虑调整以下 Nginx 参数:

  • 增加 worker_processes 数量
  • 增加 worker_connections 数量
  • 启用 HTTP/2
  • 配置适当的缓存设置

关于 CORS 的说明:

# 添加 CORS 头信息
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';

# 处理 OPTIONS 预检请求
if ($request_method = 'OPTIONS') {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';
    add_header 'Access-Control-Max-Age' '1728000';
    add_header 'Content-Type' 'text/plain; charset=utf-8';
    add_header 'Content-Length' '0';
    return 204;
}

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages