前言
在当今互联网环境中,使用HTTPS加密协议保护网站数据传输已成为基本要求。本文将详细介绍如何使用Docker容器技术快速部署WordPress,并为其配置HTTPS安全连接,帮助您轻松搭建安全可靠的个人博客或企业网站。
准备工作
在开始之前,请确保您已具备以下条件:
- 一台运行Linux的服务器(推荐Ubuntu 20.04+)
- 已安装Docker和Docker Compose
- 一个已注册的域名
- 服务器防火墙开放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
- 访问您的域名
https://yourdomain.com
- 按照WordPress安装向导完成基本设置
- 登录后台后,前往”设置”→”常规”
- 确保”WordPress地址(URL)“和”站点地址(URL)“都以
https://
开头
第四步:强制HTTPS连接
为了确保所有流量都通过HTTPS,我们需要进行以下配置:
- 编辑
wp-config.php
文件:
docker-compose exec wordpress bash
cd /var/www/html
nano wp-config.php
在/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */
这行之前添加:
define('FORCE_SSL_ADMIN', true);
$_SERVER['HTTPS'] = 'on';
- 保存并退出
第五步:配置自动续期
Let’s Encrypt证书有效期为90天,但我们的配置已经包含了自动续期功能。您可以通过以下命令检查证书状态:
docker-compose logs letsencrypt
常见问题解决
- 证书申请失败:
- 确保域名已正确解析到服务器IP
- 检查防火墙是否开放80和443端口
- 查看letsencrypt容器的日志获取详细错误信息
- 混合内容警告:
- 安装”Really Simple SSL”插件一键修复
- 或手动更新数据库中的HTTP链接为HTTPS
- 性能优化:
- 考虑添加Redis缓存容器
- 配置Nginx缓存规则
结语
通过Docker部署WordPress并配置HTTPS,我们不仅简化了安装过程,还确保了网站的安全性。这种方案易于维护,扩展性强,适合从个人博客到企业网站的各种规模应用。定期检查容器日志和证书状态,您的网站将始终保持最佳运行状态。