apache+nginx sslでめちゃめちゃ苦戦した話

2022年11月3日

はじめに

CYakigasiです。
最初の投稿は、とりあえずサーバーを建て直してから軽い気持ちで
nginxのリバースプロキシに挑戦してみたら結構苦戦した話です。

環境と目的

  • Ubuntu Server 20.04
  • Apache 2.4.41
  • Nginx 1.18.0
  • PHP 7.4.3
  • MariaDB 10.3.31

目的: Apache上でWordpressを実行して、nginxをApacheのリバースプロキシとして動作させる
SSLはCloudflareのフルモードを利用し、サーバー側の証明書は自己証明書
とりあえずサイトの記事や管理ページにアクセスできる状態になったら終了。

とりあえず色々記事を参考にやってみる

とりあえず非SSLでのリバースプロキシにチャレンジ。以下の記事を参考にして挑戦してみました。
https://qiita.com/mike-ayumu/items/5f255bab07606759a8e5
これに関しては一発で成功しました。
リダイレクトループ問題もなく、んじゃこのままSSLでもいけるかな〜と思って別の記事を探してみました。

SSL化でリダイレクトループにハマる

以下の記事を参考に書き換え、再起動。(サイトアドレスの書き換えは事前にしています)
https://pig-log.com/nginx-reverseproxy-ssl/
そして見事に最大の壁にぶち当たります。
cyakigasi.cf/Wordpressにアクセスしたらリダイレクトループが発生。
とりあえず同じ人がいないか検索してなんとか治そうと頑張ってみましたが、
どれも解決できませんでした。

最初のやつに書き加えればいけるのでは?

超シンプルに最初の非SSLにsslの設定を入れて見ました。
これが意外にも上手く行って、やっと成功した…と思ったら
wp-adminがリダイレクトループしました。

全く同じことやってる人がいる

https://geeorgey.com/archives/2803
自分と全く同じケースな人が居ました。世界って広い…
この記事を参考に自分が必要そうなところを書き換え。
特に「Cloudflareを使っている場合」の部分が大きかったみたいです。
モードもフルだったので、自分と全く一緒の状況だったんですよね…
これでとりあえず管理ページ含めたすべてのページが見れるようになりました。

残されている問題

  • WordPressモバイルアプリで固定ページや記事、Jetpackの設定の読み書きができない(修正済)
  • Jetpackの不正なログイン検知タブに表示されるIPがCloudflareの物になる(修正済)
  • コメントを書くとIPがローカルIPの物になる(修正済)
  • 画像の送信 ~無限ロード編~

反省点

同じケースの人がいるかもしれないと思って調べてみるべきでした。
「自分みたいなCloudflare使ってSSL化してるやつなんてそんないないのでは…?」
と思って「cloudflare」は検索する時のワードに含めていなかったのが最大の反省点でした。
あとそもそもちゃんとConfigファイルに何書いてるか理解すべきでした。
(こんなこと書いてるんだろうな〜くらいには思っていたけどproxy_passの部分などを見落としていた)

謝辞(関連リンク)

今回参考にさせていただいた記事のリストです。
(後から書いた記事なので順序がバラバラです、申し訳ないです)
何か問題などあればお問い合わせからお願いします。

https://hirooooo-lab.com/development/nginx-ssl-reverse-proxy
https://geeorgey.com/archives/2803
https://qiita.com/mike-ayumu/items/5f255bab07606759a8e
https://pig-log.com/nginx-reverseproxy-ssl/