$ _SERVER ['HTTPS'] = 'on'を設定すると、wp-adminへのアクセスが防止されます
-
-
残りの構成についてはあまり言いません.`define( 'FORCE_SSL_ADMIN'、true);`を設定しましたかYou dont say much about the rest of your configuration. Did you set `define('FORCE_SSL_ADMIN', true);`
- 1
- 2016-12-23
- user42826
-
'FORCE_SSL_ADMIN'を定義しませんでした.やってみます.I did not define 'FORCE_SSL_ADMIN'. I will try it.
- 0
- 2016-12-24
- nu everest
-
httpsCookieがhttp経由でロードバランサーからも送信されることを確認する必要があります.送信されていないようです.明らかに、逆にチェックする必要があります.設定したCookieがhttps経由で転送されていることです.you need to check that the https cookies are also sent from the load balancer over http. It sounds like they are not sent. Obviously also the other way around need to be checked, are the cookies that you set are being transferred over https
- 0
- 2016-12-24
- Mark Kaplun
-
1 回答
- 投票
-
- 2016-12-24
user42826に感謝します.
コーデックスによると:
WordPressがSSLを提供するリバースプロキシの背後でホストされているが、SSLなしでそれ自体がホストされている場合、これらのオプションは最初にすべてのリクエストを無限のリダイレクトループに送信します.これを回避するには、HTTP_X_FORWARDED_PROTOヘッダーを認識するようにWordPressを構成します(そのヘッダーを設定するようにリバースプロキシを適切に構成していることを前提としています).
次のアクションで問題が解決します.
これをwp-config.phpに追加します. (コーデックスリファレンス)
/* SSL Settings */ define('FORCE_SSL_ADMIN', true); /* Turn HTTPS 'on' if HTTP_X_FORWARDED_PROTO matches 'https' */ if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; }
これは不要なので、functions.phpから削除してください.
/** * Make PHP HTTPS aware via HTTP_X_FORWARDED_PROTO */ if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $_SERVER['HTTPS']='on'; }
Special thanks to user42826.
According to the codex:
If WordPress is hosted behind a reverse proxy that provides SSL, but is hosted itself without SSL, these options will initially send any requests into an infinite redirect loop. To avoid this, you may configure WordPress to recognize the HTTP_X_FORWARDED_PROTO header (assuming you have properly configured the reverse proxy to set that header).
The following actions will solve the problem.
Add this to wp-config.php. (codex reference)
/* SSL Settings */ define('FORCE_SSL_ADMIN', true); /* Turn HTTPS 'on' if HTTP_X_FORWARDED_PROTO matches 'https' */ if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; }
Remove this from functions.php as it is unnecessary.
/** * Make PHP HTTPS aware via HTTP_X_FORWARDED_PROTO */ if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $_SERVER['HTTPS']='on'; }
-
その理由は、LBがSSLを実行しているが、バックエンドがプレーンhttpであるため、ロードバランサーの背後でセキュアセッションCookieが失われるためです.他の人がエンタープライズレベルのアーキテクチャに取り組んでいるのを見るのはうれしいです;)The reason is that secure sessions cookies get lost when behind the load balancer because LB is doing SSL but backend is plain http. Nice to see others working on enterprise level architectures ;)
- 1
- 2016-12-24
- user42826
-
@ user42826この設定の良いところは、管理者アクセスを禁止したい場合にFORCE_SSL_ADMINをコメントアウトできることです.または、この考え方を再考する原因となる他の副作用はありますか?@user42826 What is nice about this setup is that I can just comment out FORCE_SSL_ADMIN if I want to prohibit admin access, or are there other side effects that should cause me to reconsider this line of thinking?
- 0
- 2016-12-24
- nu everest
-
セットアップでは、FORCE_SSL_ADMINを設定しないと管理者アクセスが妨げられるように聞こえますが、要件に応じてそれを行うためのより良い方法があります.例:.htaccessまたはapache configでwp-adminまたはwp-login.phpアクセスを防止し、プラグインを介してWPネイティブ認証を削除し、wp-adminurlがpublicurlと異なるようにWPを再構築します.In your setup, it sounds like not setting FORCE_SSL_ADMIN prevents admin access, but there are better ways to do that depending on your requirements. Examples: prevent wp-admin or wp-login.php access in .htaccess or apache config, remove WP native authentication via plugin, re-architecture WP so that wp-admin url is different than public url, etc
- 1
- 2016-12-25
- user42826
-
`require_once(ABSPATH.'wp-settings.php ');`行の前にこのコードを追加してください.[この回答のjtlに特に感謝します.](https://wordpress.stackexchange.com/a/263461/78043)Make sure to add this code before the `require_once(ABSPATH . 'wp-settings.php');` line. [Special thanks to jtl in this answer.](https://wordpress.stackexchange.com/a/263461/78043)
- 6
- 2017-09-14
- Aaroninus
-
@Aaroninusありがとう、私はCloudflareフレキシブルSSLを使用しています.コメントがなければ、もう一度検索することに時間を費やしていたでしょう.私は以前にこの関連する質問を見つけました:https://wordpress.stackexchange.com/questions/170165/wordpress-wp-admin-https-redirect-loop@Aaroninus thanks, I use Cloudflare flexible SSL and without your comment I would have spent time searching again. I found this related question previously: https://wordpress.stackexchange.com/questions/170165/wordpress-wp-admin-https-redirect-loop
- 0
- 2017-12-21
- baptx
-
アマゾンインスタンスで動作しました.コードを一番上に移動するのに苦労していました.It worked on amazon instance. Was struggling moving the code to top did the job.
- 0
- 2018-09-11
- Krishnadas PC
最初に、サーバーはロードバランサーの後ろにあります.私のSSL証明書はロードバランサーにあり、HTTPSを処理します.ポート443で受信したデータは、ポート80でHTTPを使用してWordpressサーバーに転送されます.
しかし、wordpressとphpは私のサーバー構成を知りません.これにより、ブラウザは私の有効なSSL証明書の有効性について疑わしくなります.
これを修正するために、functions.phpに次のコードを追加しました.このここのコードとコーデックスは同意します.
これはフロントエンドではうまく機能しますが、管理者アカウントでも/wp-admin/にアクセスできなくなりました.ログイン後、「申し訳ありませんが、このページへのアクセスは許可されていません」というメッセージが表示されます.他のヘルプは提供されていません.
そこで、wp-adminフォルダーを検索したところ、「申し訳ありませんが、このページへのアクセスは許可されていません」という単語が見つかりました. 17回出現します.
これらのエラーメッセージのほとんどは、ユーザー権限チェックに関連しています.
HTTPSを「オン」にして管理者アクセスを維持するにはどうすればよいですか?
概要:
更新:
エラーメッセージがwp-admin/menu.phpからのものであり、このコードのチャンクが下部にあることを発見しました.エラーの最後に
menu.php
を追加して、それがこのファイルであることを確認しました.これを修正する方法がまだわかりません.