Ubuntu 16.04にhaproxyをインストールしてwordpressをhttps対応にする。

WordPress

wordpressをhttpsでもアクセスできるようにhaproxyを導入しようと思います。
前提は

  • Let’s Encryptでサーバ証明書は取得済み
  • ドメイン名を取得済み

haproxyのインストールは

インストールする環境によってエラーで終了するかもしれません。/etc/haproxy/haproxy.cfgがないか、内容が不正であることが考えられます。心配はいりません。これから/etc/haproxy/haproxy.cfgの設定を行いますから。

まずは/etc/hostsの内容を確認します。

haproxyの設定をします。下のサイトを参考にしました。

How To Secure HAProxy with Let's Encrypt on Ubuntu 14.04 | DigitalOcean
In this tutorial, we will show you how to use Let's Encrypt to obtain a free SSL certificate and use it with HAProxy on Ubuntu 14.04. We will also show you how ...

Let’s Encryptで取得した証明書を確認します。

  • cert.pem
  • chain.pem
  • fullchain.pem
  • privkey.pem

の4つのファイルがあることを確認します。このうちfullchain.pemとprivkey.pemを結合します。まずはhaproxyが使用する証明書を保存するディレクトリを作成します。

次にfullchain.pemとprivkey.pemを結合します。

先ほど作成したディレクトリのアクセス権を変更しておきます。

/etc/haproxy/haproxy.cfgを編集します。

いくつかletsencryptと書かれている箇所がありますが、よくわかりませんね。参考にしたサイトのをそのままにしてあります。
これまでの設定に間違いがないかhaproxyを起動してみます。まだwordpressの設定は終わっていません。

試しにhttp://<ドメイン名>とhttps://<ドメイン名>でブラウザからアクセスしてみます。httpの方は正常に表示されると思います。

httpsの方はcssファイルがうまく読み込めていないと思います。chromeのデベロッパーツールで確認するとMixed Contentというエラーが30個ほど出ています。このエラーはhttpsでアクセスしているのにcssファイルやjavascriptファイルをhttpでgetしようとしているという意味です。wordpressの設定でhttpsでアクセスされたらhttpsモードで動作するようにするようにする必要があります。次の行を/var/www/html/wp-config.phpに追加します。追加する場所は先頭のほうが良いでしょう。

これでhttpsでブラウザからアクセスしてみましょう。正常に表示されるようになりました。ログインもできていると思います。うまくいかなかったらコメントください。

コメント