NginxとWordPressでSSIを動かす設定にハマった話
いまどきダサい設計なのは承知の上で
仕事で久しぶりにWebエンジニアっぽいことをしてハマったのでメモ残しておく。
※一部の設定は敢えて隠してありますのでご注意ください。 |
やりたいこと
- とあるSSIを含むサイトをAWS基盤に移行し、同時にWordPressベースにする
- AWS公式チュートリアルドキュメントにある基盤構成(AWS EC2 + Nginx + PHP + MySQL + WordPress)にする
- SSIはとりあえず維持(将来的にはWordPressによる対応に移行予定)
どういうわけかSSIがまったく動かない!
Nginx公式サイトのドキュメントに従って、 /etc/nginx/nginx.conf の location セクションに以下のような設定を投入。
もちろん、設定投入後に nginx の再起動を実施。location / { ssi on; ssi_last_modified on; }...
$ sudo service nginx restart
しかし、どういうわけかHTML内のSSIコマンドがまったく解釈されず、そのままHTMLコメントとしてブラウザに届いてしまう始末…。
ブラウザに届いたHTMLソース。SSIコマンドがそのままコメントとして届いておる…。 |
なぜじゃー!!
疑ったことは
- 設定ファイルをちゃんと読んでない? -> SSIの設定文法を敢えて間違えてみるとちゃんとエラーになるので設定は読んでいる
- 実はNginxじゃなくてApacheが動いていて、設定する場所が違う? --> chkconfig --list コマンドで見るとちゃんとApacheは停止、Nginxが稼動している
ということで「そもそもなミス」ではない模様。
こちらの記事(注:英語)を参考にエラーログレベルをdebugにしてもNginxのログにSSI関連のものが一切出力されていないため、そもそもSSIが有効になっていないことは間違いない。
トラブルシュート:ここからはもうカンのレベル
ここからのトラブルシュートは、もう経験とカンとしか説明のしようがないですな。
なにげなく Nginx の設定フォルダを眺めていると、 conf.d というディレクトリが。
nginx.conf があるのにさらに別に conf.d が?(よく設定ファイルを格納するディレクトリに使われる名前)
中を覗いてみると
む、なにやら怪しいファイルたちが。
普通の環境ではNginxでのSSIは当たり前のように動くようなので、私の環境で普通じゃないところといえばWordPressが入っていること。
試しに wordpres.confを開いてみると…
むむむ。怪しい。
コメントアウトされていない(つまり有効な)設定が入っていて、 location / などと書いてある。
もしやここにSSIの設定を投入しなければならないのでは?
と、いうことで、やってみた。
これで、動いたー!
自覚はしてますよ、WordPressサイトでSSI動かすなんてナンセンス、ということは…。
中を覗いてみると
む、なにやら怪しいファイルたちが。
普通の環境ではNginxでのSSIは当たり前のように動くようなので、私の環境で普通じゃないところといえばWordPressが入っていること。
試しに wordpres.confを開いてみると…
※一部の設定は敢えて隠してありますのでご注意ください |
むむむ。怪しい。
コメントアウトされていない(つまり有効な)設定が入っていて、 location / などと書いてある。
もしやここにSSIの設定を投入しなければならないのでは?
と、いうことで、やってみた。
※一部の設定は敢えて隠してありますのでご注意ください |
まとめ
- SSIの設定を /etc/nginx/nginx.conf に入れていたが、そもそもSSIが解釈されなかった
- いろいろ見ていると /etc/nginx/conf.d/wordpres.conf という怪しげな設定ファイルがあり、そこにも似たような設定が書かれていた
- wordpres.conf にSSIの設定を投入したところ動いた
自覚はしてますよ、WordPressサイトでSSI動かすなんてナンセンス、ということは…。