Добрый день.
Подскажите, пожалуйста, как настроить конфигурацию Drupal 8 под TLS-шлюз.
Есть обычный адрес сайта:
Для этого же сайта есть защищенный TLS-шлюз, который пробрасывает обычный адрес сайта по новому адресу:
https://tls.site.ru/subdirectory/
Сайт начал открываться по новому адресу, но с неправильными ссылками на веб-ресурсы.
Например, в пользовательских формах action ведет по старому адресу (как в админ. панели так и в формах на клиентской части). Пример:
<form action="/node/1?destination=/node/1" ...
Нужно сделать так, чтобы в значении атрибута action было значение "/subdirectory/node/1?destination=/node/1", аналогично, в ссылках на css-стили и js-скрипты в начало пути добавлялось "/subdirectory".
Для Drupal 7 у меня в /var/www/html/sites/default/settings.php эта проблема решалась так:
<?php
$base_url = 'https://site.ru'; // NO trailing slash!
// URL TLS
$url_tls = 'tls.site.ru';
// URL TLS Path
$url_tls_path = '/subdirectory';
// URL TLS Gateway
$url_tls_gateway = 'https://' . $url_tls . $url_tls_path;
// Вход осуществляется по защищенному каналу или нет
$is_tls_gateway = FALSE;
// IP-адрес сервера, на котором выполняется текущий скрипт
$server_addr = $_SERVER['SERVER_ADDR'];
// IP-адрес интерфейса TLS
$ip_tls = '10.10.100.1';
if (
$server_addr === $ip_tls) {
// Заменить Base URL
$base_url = $url_tls_gateway;
// Заменить Request URI
$_SERVER['REQUEST_URI'] = $url_tls_path . $_SERVER['REQUEST_URI']; // не работает в Drupal 8
// TLS используется
$is_tls_gateway = TRUE;
}
// Используется ли TLS Gateway
define('IS_TLS_GATEWAY', $is_tls_gateway);
?>
В Drupal 8 таким способом переприсвоить $_SERVER['REQUEST_URI'] не удается.
Подскажите, пожалуйста, как в Drupal 8 решается этот вопрос?
Комментарии
А зачем вообще дважды шифровать траффик? Может просто настройками сервера требовать на https достаточно стойкого шифрования. Там же можно реализовать авторизацию клиентскими сертификатами, если это нужно...
Ну и раз меняется домен, то зачем и url-то менять?
Я, как программист, тоже не вижу в этом смысла. Тут вопрос касается больше юридической плоскости. URL меняет ( и ломает ссылки ) криптошлюз ViPNet TLS Gateway.
Неужели там нет возможности просто домен обслуживать без добавки к url? Точно не в кривости настроек дело, а именно в ПО?
Ну и для таких целей такое ПО не совсем уместно в целом. Обычно, оно для того, чтобы весь трафик пользователя завернуть, чтобы была уверенность в надёжности канала, но тут для этого сайта и так есть https, которым можно управлять со своей стороны, и настроить соединение с нужным уровнем параноидальности, да и алгоритмы нужные выбрать - даже ГОСТ шифрование, если у вас какая-нибудь гос. организация и всё в это упирается.
Нет, не регулируется из интерфейса TLS. Может и кривость настроек settings.php, я об этом и пишу. Сейчас работает только для обычного сайта. Для примера это https://site.ru/
Может этот вопрос решается путем конфигурации Nginx? Например, внутренний редирект?
Примерно на Apache это выглядело бы так (не уверен в правильности):
RewriteEngine on
RewriteCond %{HTTP_HOST} ^tls\.site\.ru$
RewriteCond %{REQUEST_URI} !^/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) subdirectory/$1 [L]
</IfModule>
Я о том, что действительно в интерфейсе шлюза не убрать /subdirectory, не заменить, например на / просто? Без этой /subdirectory не было бы и проблемы, которую вы пытаетесь старательно решать.