
リバースプロキシ使用時のWordPress管理画面で起きる権限エラー対処法
ちょうど先日、当サイトもNginxでのリバースプロキシを使った運用に変更したのですが(詳しくは過去記事「Nginxをリバースプロキシサーバーに使ってApacheといっしょに運用する」にまとめています)WordPressを使ったサイトだったので、実装を進めていくと管理画面のログインページにアクセスした時に「このページにアクセスする権限がありません」というエラーが表示される現象がありました。
公式のCodexにも記載されているのですが、どうやら強制的にSSL通信をさせる設定を行う必要があるようで、結論から言うと下記のコードをwp-config.phpに記述する必要がありました。
【wp-config.php】
define('FORCE_SSL_ADMIN', true);
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
$_SERVER['HTTPS']='on';
}
1行目の関数で管理画面のSSL通信を強制にするのですが、リバースプロキシを使っている場合リダイレクトループになるので、HTTP_X_FORWARDED_PROTO ヘッダーを認識させる形になるとのことです(公式のCodexより引用)これで無事に管理画面にもログインができるようになりました。
また、上記コードはwp-config.php内の最初に記述するようにします。(記述場所によってはエラーとなるため)使う条件は限られますが、知らないとほぼわからない部分ですよね、、こういった情報があるのはありがたいですね。
(参考)
WordPress Codex:管理画面での SSL 通信categories
- WordPress(61)
- JavaScript(49)
- Vue.js(48)
- CSS(46)
- jQuery(34)
- Nuxt.js(22)
- Sass(21)
- Gulp(17)
- webpack(16)
- PHP(14)
- HTML(14)
- GSAP(11)
- React(10)
- Vite(9)
- Pug(9)
- Laravel(8)
- Cordova(8)
- Linux(7)
- Next.js(6)
- Apache(5)
- Shopify(4)
- REST API(4)
- Node.js(4)
- Smarty(3)
- Git(3)
- JSON(3)
- その他プログラミング(3)
- Google Apps API(3)
- Bootstrap(3)
- 環境構築・システム(3)
- TypeScript(2)
- EJS(2)
- RMS(2)
- Docker(2)
- Instagram API(2)
- Excel VBA(2)
- SVG(1)
- Dart(1)
- ECカートASP(1)
- Markdown(1)
- AMP(1)
- Nginx(1)
- XML(1)
- shellscript(1)
- Ruby(1)
- MySQL(1)