使用Docker部署WordPress并配置Nginx SSL加密

来自:素雅营销研究院

头像 方知笔记
2025年06月23日 02:19

前言

在当今互联网环境中,网站安全性至关重要。本文将介绍如何利用Docker容器技术快速部署WordPress,并通过Nginx配置SSL证书实现HTTPS加密访问,为您的网站提供安全保障。

准备工作

  1. 已安装Docker和Docker Compose的服务器
  2. 域名一个(用于申请SSL证书)
  3. 基本的Linux命令行操作知识

一、创建Docker Compose文件

首先创建一个docker-compose.yml文件,定义WordPress和MySQL服务:

version: '3'

services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html

nginx:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./cert:/etc/nginx/cert
depends_on:
- wordpress

volumes:
db_data:
wordpress_data:

二、配置Nginx反向代理

创建nginx.conf配置文件,设置反向代理和SSL:

events {
worker_connections 1024;
}

http {
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name yourdomain.com;

ssl_certificate /etc/nginx/cert/fullchain.pem;
ssl_certificate_key /etc/nginx/cert/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

location / {
proxy_pass http://wordpress:80;
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;
}
}
}

三、获取SSL证书

推荐使用Let’s Encrypt免费证书:

  1. 安装Certbot工具
  2. 运行命令申请证书:
certbot certonly --standalone -d yourdomain.com
  1. 将生成的证书文件(fullchain.pemprivkey.pem)复制到./cert目录

四、启动服务

运行以下命令启动所有服务:

docker-compose up -d

五、完成WordPress安装

  1. 访问https://yourdomain.com
  2. 按照WordPress安装向导完成设置
  3. 建议在WordPress设置中将站点地址改为HTTPS

常见问题解决

  1. 证书续期问题:可以设置cron任务自动续期
  2. 性能优化:考虑添加缓存插件或配置Nginx缓存
  3. HTTP重定向循环:检查WordPress设置和Nginx配置

结语

通过Docker部署WordPress并配置Nginx SSL,不仅简化了部署流程,还提高了网站的安全性。这种方案易于维护和扩展,适合个人博客和企业网站使用。随着业务增长,您可以轻松扩展更多服务或调整配置。