·
申请SSL证书
SSL证书的申请在各大云商上都有,而且还有针对单域名的免费版本,可以尝试。自签名的证书不建议用在实际产品环境。
Docker安装Wordpress
使用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: xyz
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: xxx
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: xxx
volumes:
db_data:
Nginx配置
配置好ssl证书,将指定域名反向代理到wordpress Docker所在的8000端口。
在完成wordpress的https插件安装后,进一步将80端口重定向至443端口。
server {
listen 80;
listen [::]:80;
server_name xxx.yyy.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 443;
listen [::]:443;
ssl on;
ssl_certificate xxx.pem;
ssl_certificate_key yyy.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
server_name xxx.yyy.com;
root /var/www/html;
index index.html;
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_redirect off;
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-Host $server_name;
proxy_set_header X-Forwarded-Proto https;
}
}
Wordpress配置
- 安装插件:SSL 不安全内容修复器设置,默认的简单设置即可,HTTPS监测选择“HTTP_X_FORWARDED_PROTO(例如负载平衡器、反向代理、NginX)”
- 设置——常规中,将站点地址两个URL改成https
- 修改插件:七牛图床,上传和请求token使用了http的地址,修改插件源码,将http://up.qiniu.com 统一改成 https://up.qbox.me
- 可选:wp-config.php中,可以设置login和admin页面强制https。由于nginx会设置80重定向到443,这一步可省略
参考资料
