Рейтинг:1

Обратный прокси и auto_complete со смешанным содержимым

флаг sa

У меня есть конфигурация apache с обратным прокси (IP этого сервера: 192.168.1.82) для обработки моего нового сервера D9:

192.168.1.82 : 443 передается на 192.168.1.87 как HTTP(80)

<VirtualHost *:443>
    ServerName www.mydomain.be
    ServerAlias mydomain.be
    NameVirtualHost www.mydomain.be

    ProxyPreserveHost On
    ProxyPass / http://192.168.1.87:80/
    ProxyPassReverse / http://192.168.1.87/
    SSLProxyCheckPeerCN Off
    SSLProxyCheckPeerName Off
    SSLProxyVerify none
    ...
</VirtualHost>

Я думаю, что это называется терминацией SSL

192.168.1.82 : 80 перенаправляется как https (443)

<VirtualHost *:80>
    ServerName www.mydomain.be
    Redirect permanent / https://www.mydomain.be/
</VirtualHost>

192.168.1.87 : настройки.php

$settings['reverse_proxy'] = ИСТИНА;
$settings['reverse_proxy_addresses'] = [
  '192.168.1.82',
];
$_SERVER['HTTPS'] = 'включено';
$settings['ssl'] = ИСТИНА;

К сожалению, функция автозаполнения поля ссылки на объект запрашивает конечную точку без HTTPS (незащищенную) (смешанное содержимое):

http://www.mydomain.be/fr/entity_reference_autocomplete/node/default:node/3veI...I?q=t

Что я могу сделать, чтобы заставить https... Я приму самый уродливый хак, если он работает (да, я здесь)

Тест 1: ProxyPass https вместо http [не будет работать, см. ниже]

Я адаптировал 82 виртуальных хоста следующим образом:

SSLProxyEngine включен
ПроксиПасс / https://192.168.1.87/
ПроксиПассРеверс / https://192.168.1.87/

=> На этот раз у меня нет проблемы со смешанным содержимым, но у меня есть ERR_TOO_MANY_REDIRECTS снова для этой конечной точки автозаполнения сущности

Тест 2: взломать Symfony\Component\HttpFoundation\Request::isSecure()

Вот моя новая функция isSecure():

публичная функция isSecure(){
  вернуть ИСТИНА;
}

Сделав это, URL-адрес автозаполнения использует https, но на этот раз я получил ERR_TOO_MANY_REDIRECTS

ПОЛУЧИТЬ https://www.mydomain.be/fr/entity_reference_autocomplete/node/default%3Anode/3ve...I?q=T net::ERR_TOO_MANY_REDIRECTS

Я действительно понятия не имею, откуда это может прийти

Kevin avatar
флаг in
Вы пытались применить это на уровне htaccess?
Baud avatar
флаг sa
хорошая идея: как это сделать? Заранее спасибо за подсказку!!!
Kevin avatar
флаг in
https://linuxize.com/post/redirect-http-to-https-in-apache/
Baud avatar
флаг sa
@kevin: это не перенаправление https, это завершение SSL: 82 обрабатывает шифрование и передает результат (ProxyPass) на 87 как обычный http. Моя установка выглядит почти хорошо, так как все работает, кроме смешанного контента. Я не знаю, проблема ли это в Drupal или в Apache.
Рейтинг:1
флаг in

Файл htaccess в Drupal должен иметь возможность направлять весь трафик как HTTPS. В файле есть некоторые комментарии, но что-то вроде этого должно работать (используется в нескольких проектах):

  # Перевести весь трафик на HTTPS, кроме локального экземпляра
  RewriteCond %{HTTPS} выкл.
  RewriteCond %{HTTP:X-Forwarded-Proto} !https
  RewriteCond %{HTTP_HOST} !^local\.dev\.domain$ [NC]
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]




  # Измените RewriteBase, если вы используете Drupal в подкаталоге или в
  # VirtualDocumentRoot и правила перезаписи работают неправильно.
  # Например, если ваш сайт находится по адресу http://example.com/drupal, раскомментируйте и
  # изменить следующую строку:
  # Переписать базу/друпал
  #
  # Если ваш сайт работает в VirtualDocumentRoot по адресу http://example.com/,
  # раскомментируйте следующую строку:
  # Переписать Базу /

Третья строка является необязательной — она освобождает локальную среду разработки от перезаписи. Если вы используете локальный SSL, вы можете опустить эту строку.

Если Apache обслуживает все запросы, он пройдет через эти правила, оценит их и перепишет.

Вы можете протестировать правила здесь: https://htaccess.madewithlove.com/

Вот тест: https://htaccess.madewithlove.com?share=69ce1303-b1af-4041-aecf-a32f2ecd1bfb

введите описание изображения здесь

Baud avatar
флаг sa
Большое спасибо, я безуспешно добавил 4 строки в конец файла drupal по умолчанию: https://htaccess.madewithlove.com?share=1cbb4094-19ed-4407-96a3-07c50a159c68.
Kevin avatar
флаг in
Порядок имеет значение в htaccess. Попробуйте после этой строки комментария `# RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]`
Kevin avatar
флаг in
Я обновил свой ответ, чтобы вы могли видеть, куда должны идти правила. Посмотреть новые результаты: https://htaccess.madewithlove.com?share=e8e28846-517d-42cf-bc84-d46a736bdd62
Baud avatar
флаг sa
К сожалению, я получил ERR_TOO_MANY_REDIRECTS.
Baud avatar
флаг sa
Это связано с тем, что https перенаправляется на сервер 87 как http моим сервером 82 apache... мой apache 87 обрабатывает порт 80 onlt
Baud avatar
флаг sa
Я добавил больше деталей в свой вопрос
Рейтинг:0
флаг cn

Попробуйте установить заголовки X-Forwarded-* в обратном прокси-сервере Apache:

<Виртуальный хост *:443>
    Имя сервера www.mydomain.be
    Псевдоним сервера mydomain.be
    ИмяVirtualHost www.mydomain.be

    ProxyPreserveHost включен
    ПроксиПасс / http://192.168.1.87:80/
    ПроксиПассРеверс / http://192.168.1.87/

    RequestHeader устанавливает X-Forwarded-Proto "https"
    RequestHeader устанавливает X-Forwarded-Port "443"

Это заголовки, которые нужны для конфигурации обратного прокси в settings.php.

Вы можете проверить наличие заголовков на www.mydomain.be/admin/reports/status/php в разделе Информация о заголовках HTTP


В такой настройке использование заголовков X-Forward-* является общим подходом, позволяющим Drupal создавать абсолютные ссылки с правильным протоколом, чтобы избежать ошибки смешанного содержимого.

Тем не менее, страницы Drupal могут быть полностью созданы с относительными ссылками, и именно так Drupal настраивается из коробки, включая основные поля автозаполнения. Таким образом, вы можете просмотреть маршруты автозаполнения в коде contrib/custom и удалить абсолютный возможность сделать их относительными.


перенаправление

Чтобы избежать дальнейших комментариев, Drupal не перенаправляет, «из коробки».Перенаправление не связано с проблемой, оно только усложняет отладку. Издалека невозможно сказать, какой код вы реализовали для перенаправления. Также может случиться так, что перенаправления все еще кэшируются, постоянные перенаправления кэшируются в течение нескольких недель, даже если вы удалили код перенаправления.

Baud avatar
флаг sa
Выглядит очень хорошо!!! Я проверю это сегодня вечером ... я не могу дождаться
4uk4 avatar
флаг cn
Хорошо, при тестировании проверьте вывод phpinfo() вашего сайта Drupal до и после изменения. Смотрите редактирование.
Baud avatar
флаг sa
К сожалению, это не работает (информация: заголовок установлен на странице состояния) => Я получил `ERR_TOO_MANY_REDIRECTS` для автозаполнения. Существует также «X-Forwarded-For», для которого установлено значение «192.168.1.1», не знаю, так ли это должно быть.
4uk4 avatar
флаг cn
Это IP-адрес клиента, он вам тоже нужен. Apache устанавливает этот заголовок по умолчанию. Но что случилось с двумя, которые я предложил? Отсутствует до и присутствует после? Затем удалите все другие хаки, очистите все кеши, а также кеш браузера, перезапустите все серверы и повторите попытку.
Baud avatar
флаг sa
`X-Forwarded-Proto` установлен на `https`, а `X-Forwarded-Port` установлен на 443, как показано `phpinfo()`.
Baud avatar
флаг sa
Вы знаете способ отследить "слишком много" перенаправлений? Это что-то из Apache или проблема с Drupal?
4uk4 avatar
флаг cn
В этой теме слишком много редиректов. Вам не нужно ничего для отладки проблемы со смешанным содержимым, вы можете подключить браузер к прокси-серверу через https, введя его в адресной строке. Отладьте перенаправление http->https на граничном прокси-сервере, когда все остальное работает, а затем начните с непостоянных 302-х.
Baud avatar
флаг sa
Я прочитал 10 раз ваш последний комментарий, но я не понимаю... для меня это совершенно загадочно. Не могли бы вы написать свою идею в своем ответе? Вся моя конфигурация Apache находится здесь, в сообщении, нет другого перенаправления, кроме того, которое перенаправляет http на https. Я не знаю, что такое «пограничный прокси».
4uk4 avatar
флаг cn
Чтобы было ясно, вам нужно удалить любой код перенаправления и начать все сначала. Постоянные перенаправления очень сложно отладить (самая раздражающая вещь, которую я знаю). Позже (не связанное с проблемой) вы можете добавить редирект на обратный прокси (прокси на краю к клиенту), чтобы автоматически менять http на https в адресной строке.
Baud avatar
флаг sa
Спасибо, я удалю постоянное перенаправление сегодня вечером (это тестовый сайт, который сейчас работает... Я мог бы заставить его работать, изменив номер порта и перенаправив трафик [используя этот порт] на мой сервер 87 с моим брандмауэр... люди согласны использовать другой порт для тестовой площадки) но я могу работать на нем только вечером...
Baud avatar
флаг sa
Я удалил ВСЮ конфигурацию с пограничного сервера, кроме прокси-сервера, описанного в начале этого вопроса. Я заменил .htaccess оригинальными, но все еще получаю слишком много перенаправлений. Как узнать, откуда оно идет?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.