docker中的wordpress添加https访问

申请证书

可以从freessl.cn免费申请。免费的SSL证书时间长度为1年,但是只能对单个域名,不支持多域名通配符,选择的话以个人需求为准。

选择浏览器生成
步骤1

点击确认创建后,得到如下信息:
步骤2

接下来到域名管理里面,按上述信息配置域名的信息,可以参考上面的验证配置指南,如下:
步骤3

配置完了之后,不一定会立马生效,取决于配置改解析项的TTL。

apache配置

  1. 将容器里面的443端口映射到宿主机的443端口。如果已启动了容器,可能需要重新创建。
  2. 将申请好的证书和私钥上传到宿主机中,并将其挂载到容器中。
docker run --name wp \
-p 80:80 \
-p 443:443 \
-e WORDPRESS_DB_HOST=host \
-e WORDPRESS_DB_USER=user \
-e WORDPRESS_DB_PASSWORD="" \
-v /root/wordpress:/var/www/html \
-v /root/ssl:/ssl \
-d wordpress
  1. 先进入容器中
docker container exec -it wp bash
  1. 加载apache的ssl模块
a2enmod ssl
  1. 修改证书和私钥路径
vim /etc/apache2/sites-available/default-ssl.conf

找到SSLCertificateFileSSLCertificateKeyFile这两个配置项,改成把私钥和证书挂载进容器里面后的路径,这里都在/ssl/目录下。修改后为:
apache ssl配置

  1. 让ssl配置被apache加载
ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf
  1. 退出容器,并重启容器。
    docker container restart wp

  2. 强制http请求转到https
    编辑 /etc/apache2/sites-available/000-default.conf,找到<VirtualHost *:80> </VirtualHost>标签中增加下面的配置:

<Directory "/var/www/html"> 
    RewriteEngine   on
    RewriteBase /
    # FORCE HTTPS
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</Directory>

如下:
http强跳https配置

  1. 退出容器,并重启容器。
    docker container restart wp

检验

如果不能访问,可以往如下两方面考虑:

  1. 查看容器的日志,看报什么错误信息:
docker container logs -f wp
  1. 看宿主机的443端口是否开放

参考:
https://blog.csdn.net/yori_chen/article/details/88577249

扫描二维码关注公众号,回复: 10424471 查看本文章
发布了166 篇原创文章 · 获赞 118 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/asahinokawa/article/details/103560700