リバプロ+HTTP/2+Let’s EncryptなWordPressを作る。トラブルシューティング編

投稿者:

インフラ編である程度は書いていますが、ハマったポイントをまとめておきたい。

◆WordPress初期設定
初期設定時にアクセスされたURIを元にしてコンフィグ類が生成されるらしい。
プライベートなIPでアクセスしちゃうとプロキシ通らない仕様になって、非常にハマった。

解決策はドメインでアクセスしてあげること。

◆混在コンテンツになっちゃう問題(不完全な常時SSLの状態)
リバプロ→WordPress間がHTTP/1.1なのが原因と思って調査。
実際にブラウザなどでデベロッパーツール使うとコンテンツが見れるけど、
画像やらCSSがHTTP/1.1通信で取得されているのが原因。

常時SSLに切り替えるプラグインを入れてコンテンツ内部を書き換えて対応


◆しかしその後も続く混在コンテンツ
結果から書くと、一部のプラグインで実装した画像認証のせい
※画像認証:グネグネの日本語をいれろ的なアレ

内部プロセスとしては認証対象コンテンツにアクセスがあると、
画像が自動生成されるがこいつがHTTP/1.1で通信されて取得されて常時SSLじゃなくなるって具合。

セキュリティをリキャプチャに設定して対応。

ローカルPCからWordPress管理画面にアクセスできない問題
我が家の構成の問題もあるので一概に言えることではないが、
常時SSLにしたことで証明書認証が常に発生するわけで、ローカルのプライベートIPを使ってのアクセスはもちろん弾かれる。
ましてや上述のリキャプチャを入れているので管理画面ロックされてしまって記事作成どころではない。

対策としてはドメインでアクセスしてあげればいいので、
管理用のPCのHOSTSにドメインにアクセスするとリバースプロキシサーバのローカルIPに向くようにしてあげれば解決。
我が家では内部DNSがあるので、内部DNSにレコード登録してローカル環境は全てリバプロに向くようにした。

キャッシュ残るよチクショウ問題
まぁ、単純なケアレスミス。
Webサイトテスト時のあるあるですね。
ブラウザキャッシュ消さないでおかしいぞおかしいぞってやってるアレです。

テスト時はプライベートブラウズモードなどのcookieとかキャッシュが残らない環境でやりましょう。

WordPressプラグインのSSL対応
上述もしていますが、いいなーと思ったプラグインがSSL対応してなくて、
せっかく常時SSLにしたのに混在コンテンツになってHTTP/2の旨味もなくなっちゃうっていう。。。
トラブルというより愚痴に近い。

とはいえ、自作WordPressをしない限り顕在化しない問題です。
外部で提供されているWordPressのサーバサービスは大体CDN側とかLB側でSSLに変換してます。
もしくはSSL化自動スクリプト持ってるのであまり気にせずとも利用できるかと。

頑張って自作する人はトライ&エラーで試してみてください。


◆余談とかいろいろ
wp-config.phpってのがDBに設定されたパラメータよりも優先されるのに微妙さを感じた。
そりゃクラッカーの皆さんはそこ狙ってくるわな。
みるらじで書いた構築記事ではアクセス権限を絞って書いてますので問題はないけど、
アクセスログが残りまくるのいやだって人はログの除外をいれるなりしよ。

==おまけ==
文字ばかりなんで、画像も載せようと思った。
ちゃんと構築するとこんな感じの評価になります。

https://www.ssllabs.com/ssltest/

https://developers.google.com/speed/pagespeed/insights/?hl=JA


今後SSLの仕組みが変わると設定値も変えなきゃいけませんが、現状は満足。
では。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です