Docker部署WordPress配置HTTPS完整指南

来自:素雅营销研究院

头像 方知笔记
2025年05月06日 03:44

前言

在当今互联网环境中,使用HTTPS加密协议保护网站数据传输已成为基本要求。本文将详细介绍如何使用Docker容器技术快速部署WordPress,并为其配置HTTPS安全连接,帮助您轻松搭建安全可靠的个人博客或企业网站。

准备工作

在开始之前,请确保您已具备以下条件:

  1. 一台运行Linux的服务器(推荐Ubuntu 20.04+)
  2. 已安装Docker和Docker Compose
  3. 一个已注册的域名
  4. 服务器防火墙开放80和443端口

第一步:创建Docker Compose文件

首先创建一个项目目录,然后新建docker-compose.yml文件:

mkdir wordpress-https && cd wordpress-https
nano docker-compose.yml

将以下内容粘贴到文件中:

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:
- "80:80"
- "443:443"
volumes:
- wordpress_data:/var/www/html
- ./certs:/etc/nginx/certs
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress

nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./certs:/etc/nginx/certs

letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./certs:/etc/nginx/certs
depends_on:
- nginx-proxy

volumes:
db_data:
wordpress_data:

第二步:获取SSL证书

我们将使用Let’s Encrypt免费SSL证书。首先创建certs目录:

mkdir certs

然后启动服务:

docker-compose up -d

等待所有容器启动完成后,我们需要为WordPress容器添加环境变量以申请证书:

docker-compose stop wordpress
docker-compose rm wordpress

编辑docker-compose.yml文件,在wordpress服务下添加以下环境变量:

environment:
VIRTUAL_HOST: yourdomain.com
LETSENCRYPT_HOST: yourdomain.com
LETSENCRYPT_EMAIL: your@email.com

然后重新启动服务:

docker-compose up -d

第三步:配置WordPress

  1. 访问您的域名https://yourdomain.com
  2. 按照WordPress安装向导完成基本设置
  3. 登录后台后,前往”设置”→”常规”
  4. 确保”WordPress地址(URL)“和”站点地址(URL)“都以https://开头

第四步:强制HTTPS连接

为了确保所有流量都通过HTTPS,我们需要进行以下配置:

  1. 编辑wp-config.php文件:
docker-compose exec wordpress bash
cd /var/www/html
nano wp-config.php

/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */这行之前添加:

define('FORCE_SSL_ADMIN', true);
$_SERVER['HTTPS'] = 'on';
  1. 保存并退出

第五步:配置自动续期

Let’s Encrypt证书有效期为90天,但我们的配置已经包含了自动续期功能。您可以通过以下命令检查证书状态:

docker-compose logs letsencrypt

常见问题解决

  1. 证书申请失败
  • 确保域名已正确解析到服务器IP
  • 检查防火墙是否开放80和443端口
  • 查看letsencrypt容器的日志获取详细错误信息
  1. 混合内容警告
  • 安装”Really Simple SSL”插件一键修复
  • 或手动更新数据库中的HTTP链接为HTTPS
  1. 性能优化
  • 考虑添加Redis缓存容器
  • 配置Nginx缓存规则

结语

通过Docker部署WordPress并配置HTTPS,我们不仅简化了安装过程,还确保了网站的安全性。这种方案易于维护,扩展性强,适合从个人博客到企业网站的各种规模应用。定期检查容器日志和证书状态,您的网站将始终保持最佳运行状态。