Intereting Posts
Обновление с 3.5.2 до 3.9.1 Измените 'post_modify' на запрос wp_get_attachment_image_src () каждый раз регенерировать изображения нестандартного размера Удалить Shortcode из предварительного просмотра блога Создание и обновление файла Json Сообщение не публикуется после нажатия кнопки «Опубликовать» в пользовательском типе сообщения Проблема поля отношения: Неинициализированное смещение строки: 0 в Проверьте время сервера для отображения записей SQL – Radio Station DJ Rotator Plugin Попытка использовать «Среднее» изображение для пользовательского типа сообщения на главной странице Есть ли крючок для активации темы? или что-то подобное? Тема останавливает загрузчик мультимедиа от работы Как проверить, существует ли пользователь по данному идентификатору Показать связанные сообщения, основанные на текущем имени поля ACF, в одном сообщении страницы (цикл в цикле) Ключ к действию только для публикации публикации не при редактировании или обновлении Ошибка Nonce в IE

Установка $ _SERVER = 'on' предотвращает доступ к wp-admin

Сначала мой сервер сидит за балансиром нагрузки. Мой SSL-сертификат находится на балансировщике нагрузки и обрабатывает HTTPS. Данные, поступающие на порт 443, отправляются на сервер WordPress с использованием HTTP на порту 80.

Однако wordpress и php не знают мою конфигурацию сервера. Это приводит к тому, что браузер становится подозрительным относительно действительности моего действительного сертификата SSL.

Чтобы исправить это, я добавил следующий код в 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'; } 

Это отлично работает для интерфейса, но теперь / wp-admin / недоступен даже с моей учетной записью администратора. После входа в систему я получаю сообщение «Извините, у вас нет доступа к этой странице». Никакой другой помощи не предоставляется.

Поэтому я просмотрел папку wp-admin и обнаружил, что слова «Извините, вам не разрешен доступ к этой странице». появляются 17 раз.

Большинство этих сообщений об ошибках связаны с проверкой прав пользователя.

Как сохранить HTTPS и сохранить доступ администратора?

Резюме:

  • Перед добавлением логики HTTP_X_FORWARDED_PROTO в functions.php я могу получить доступ к wp-admin /
  • После добавления логики HTTP_X_FORWARDED_PROTO к functions.php я не могу получить доступ к wp-admin /
  • После удаления логики HTTP_X_FORWARDED_PROTO в functions.php я не могу получить доступ к wp-admin /

ОБНОВИТЬ:

Я обнаружил, что сообщение об ошибке поступает из wp-admin / menu.php и этого фрагмента кода внизу. Я добавил menu.php в конец ошибки, чтобы выяснить, что это был этот файл.

 if ( !user_can_access_admin_page() ) { /** * Fires when access to an admin page is denied. * * @since 2.5.0 */ do_action( 'admin_page_access_denied' ); wp_die( __( 'Sorry, you are not allowed to access this page. menu.php'), 403 ); } 

Я все еще не понимаю, как это исправить.

Особая благодарность 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'; } 

Удалите это из функции.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'; }