通过 Docker 部署 Nginx 并配置 HTTPS 反向代理,可以分为以下几个步骤:
1. 准备工作
-
获取 SSL 证书:
- 你可以从 Let’s Encrypt 或其他证书颁发机构获取免费的 SSL 证书。
- 证书通常包括两个文件:
- 证书文件(如
certificate.crt
)。 - 私钥文件(如
private.key
)。
- 证书文件(如
-
准备配置文件:
- 创建一个 Nginx 配置文件,用于定义反向代理和 HTTPS 配置。
-
安装 Docker:
- 确保你的服务器上已经安装了 Docker。如果没有安装,可以参考 Docker 官方文档。
2. 创建 Nginx 配置文件
在宿主机上创建一个目录(如 /root/nginx
),用于存放 Nginx 配置文件和 SSL 证书。
目录结构:
/root/nginx/
├── nginx.conf
├── ssl/
│ ├── certificate.crt
│ └── private.key
Nginx 配置文件(nginx.conf
):
events {}
http {
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri; # 将 HTTP 请求重定向到 HTTPS
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/certificate.crt; # SSL 证书路径
ssl_certificate_key /etc/nginx/ssl/private.key; # SSL 私钥路径
ssl_protocols TLSv1.2 TLSv1.3; # 支持的 SSL 协议版本
ssl_ciphers HIGH:!aNULL:!MD5; # 加密套件
location / {
proxy_pass http://backend-server:8080; # 反向代理到后端服务
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;
}
}
}
- 说明:
listen 80
:监听 HTTP 请求,并将其重定向到 HTTPS。listen 443 ssl
:监听 HTTPS 请求。ssl_certificate
和ssl_certificate_key
:指定 SSL 证书和私钥的路径。proxy_pass
:将请求反向代理到后端服务(如backend-server:8080
)。
3. 运行 Nginx 容器
使用 Docker 运行 Nginx 容器,并将配置文件和 SSL 证书挂载到容器中。
运行命令:
docker run -d \
--name my-nginx \
-p 80:80 \
-p 443:443 \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/ssl:/etc/nginx/ssl \
nginx
- 参数说明:
-d
:以后台模式运行容器。--name my-nginx
:为容器命名为my-nginx
。-p 80:80
:将宿主机的 80 端口映射到容器的 80 端口(HTTP)。-p 443:443
:将宿主机的 443 端口映射到容器的 443 端口(HTTPS)。-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf
:挂载 Nginx 配置文件。-v /root/nginx/ssl:/etc/nginx/ssl
:挂载 SSL 证书目录。nginx
:使用官方 Nginx 镜像。
4. 测试访问
-
HTTP 测试:
- 访问
http://example.com
,应该会自动重定向到https://example.com
。
- 访问
-
HTTPS 测试:
- 访问
https://example.com
,确保页面正常加载,并且浏览器显示安全连接(锁图标)。
- 访问
-
后端服务测试:
- 确保后端服务(如
backend-server:8080
)正常运行,并且可以通过 Nginx 反向代理访问。
- 确保后端服务(如
5. 其他注意事项
-
证书更新:
- 如果使用 Let’s Encrypt 证书,证书有效期为 90 天,需要定期更新。
- 更新证书后,重启 Nginx 容器以加载新证书:
docker restart my-nginx
-
防火墙配置:
- 确保服务器的防火墙允许 80(HTTP)和 443(HTTPS)端口的流量。
-
日志查看:
- 如果遇到问题,可以查看 Nginx 容器的日志:
docker logs my-nginx
- 如果遇到问题,可以查看 Nginx 容器的日志:
-
性能优化:
- 可以根据需要调整 Nginx 的 SSL 配置(如启用 HTTP/2、优化加密套件等)。
6. 总结
通过 Docker 部署 Nginx 并配置 HTTPS 反向代理的步骤如下:
- 准备 SSL 证书和 Nginx 配置文件。
- 使用 Docker 运行 Nginx 容器,挂载配置文件和证书。
- 测试 HTTP 和 HTTPS 访问,确保反向代理正常工作。
如果你有其他问题,欢迎随时提问!