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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章