Установка $ _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
-
вам необходимо убедиться,что файлы cookie https также отправляются балансировщиком нагрузки по http.Похоже,они не отправляются.Очевидно,также необходимо проверить обратное,передаются ли файлы cookie,которые вы установили,через httpsyou 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,эти параметры изначально будут отправлять любые запросы в бесконечный цикл перенаправления. Чтобы избежать этого,вы можете настроить WordPress для распознавания заголовка HTTP_X_FORWARDED_PROTO (при условии,что вы правильно настроили обратный прокси для установки этого заголовка).
Следующие действия помогут решить проблему.
Добавьте это в 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'; }
-
Причина в том,что файлы cookie безопасных сеансов теряются за балансировщиком нагрузки,потому что LB использует SSL,а серверная часть - это простой http.Приятно видеть,что другие работают над архитектурами корпоративного уровня;)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 предотвращает доступ администратора,но есть лучшие способы сделать это в зависимости от ваших требований.Примеры: предотвращение доступа wp-admin или wp-login.php в конфигурации .htaccess или apache,удаление собственной аутентификации WP через плагин,изменение архитектуры WP,чтобы URL-адрес wp-admin отличался от общедоступного URL-адреса и т. Д.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,спасибо,я использую гибкий SSL Cloudflare,и без вашего комментария я бы снова потратил время на поиск.Ранее я нашел этот связанный вопрос: 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
-
Он работал на экземпляре Amazon.Пытался переместить код наверх,сделал свою работу.It worked on amazon instance. Was struggling moving the code to top did the job.
- 0
- 2018-09-11
- Krishnadas PC
Во-первых,мой сервер находится за балансировщиком нагрузки. Мой сертификат SSL находится на балансировщике нагрузки и обрабатывает HTTPS. Данные,поступающие на порт 443,перенаправляются на сервер Wordpress с использованием HTTP на порту 80.
Однако wordpress иphp не знают конфигурации моего сервера. Это заставляет браузер подозревать действительность моего действующего SSL-сертификата.
Чтобы исправить это,я добавил следующий код вfunctions.php. Я нашел здесь код здесь и codex соглашается .
Это отлично работает для внешнего интерфейса,но теперь/wp-admin/недоступен даже с моей учетной записью администратора. После входа в систему я получаю сообщение «Извините,у вас нет доступа к этой странице». Никакой другой помощи не предоставляется.
Я поискал в папке wp-admin и обнаружил слова «Извините,вам не разрешен доступ к этой странице». появляются 17 раз.
Большинство этих сообщений об ошибках связано с проверкой прав пользователя.
Как оставить HTTPS включенным и сохранить доступ администратора?
Резюме:
ОБНОВЛЕНИЕ:
Я обнаружил,что сообщение об ошибке исходит от wp-admin/menu.php и от этого фрагмента кода внизу. Я добавил
menu.php
в конец сообщения об ошибке,чтобы выяснить,что это был этот файл.Я до сих пор не понимаю,как это исправить.