Рейтинг:0

Можно ли установить директиву протоколов Apache условно 1 раз, а не во всех блоках VirtualHost?

флаг dj

Вместо добавления протоколы h2 http/1.1 во всех 45 моих Виртуальный хост *: 443 блоков, мне было интересно, есть ли способ проверить соответствующее условие, а затем установить протоколы исходя из этого? Я думаю, но не уверен на 100%, что соответствующий тест должен проверять, был ли запрос для https. Может быть, я должен вместо этого проверить порт?

Это то, что у меня есть до сих пор, и это не работает.

Определить ПРОТОКОЛЫ "http/1.1"

<Если "%{HTTPS} == 'включено'">
    Определить ПРОТОКОЛЫ "h2 http/1.1"
</Если>

Протоколы ${ПРОТОКОЛЫ}

Редактировать

Протоколы не работает в контексте каталога.

Редактировать 2

Я просто не думаю, что это возможно, учитывая, что Протоколы директива, если она определена глобально, не может быть динамически изменена таким образом. Сервер уже проанализировал директиву. Это установлено. Поправьте меня если я ошибаюсь.

Рейтинг:1
флаг in

От документация:

Директива протоколов
Описание: Протоколы, доступные для сервера/виртуального хоста.
Синтаксис: протокол протокол...
По умолчанию: Протоколы http/1.1
Контекст: конфигурация сервера, виртуальный хост

Протоколы разрешено в конфиге сервера, а не только на виртуальном хосте. Просто установите его один раз за пределами VirtualHost, и он будет установлен для всего сервера. Затем вы можете опустить его в определении VirtualHost.

Очень простой конфигурацией будет:

# определить значения по умолчанию
Протоколы h2 http/1.1

# один VirtualHost для всех перенаправлений HTTP
<Виртуальный хост *:80>
    Протоколы http/1.1
    RewriteEngine включен
    RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
</ виртуальный хост>

# Теперь все определения HTTPS VirtualHost
<Виртуальный хост *:443>
    # ...
</ виртуальный хост>
Jeff avatar
флаг dj
Я хочу, чтобы другая директива Protocols была установлена ​​на виртуальных хостах без поддержки SSL.
флаг in
Поскольку в настоящее время HTTP используется только для перенаправления на HTTPS, вы можете определить один VirtualHost для HTTP с определением отклоняющихся протоколов.

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

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