回到主页

Wordpress配置HTTPS安全访问

qiniu图床+Docker+Nginx

· Nginx,Docker,Qiniu

申请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,这一步可省略

参考资料