Назад | Перейти на главную страницу

Изменить конфигурацию apache по умолчанию для обслуживания HTTPS на двух портах?

Я запускаю apache2 на Devuan Beowulf (~ = Debian Buster) с конфигурацией по умолчанию. В этой конфигурации у меня есть:

в sites-available/default-ssl.conf:

<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
        # etc etc.

в sites-available/default-000.conf:

<VirtualHost *:80>
        # etc etc.

И в sites-available/default-000.conf:

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

Как сделать так, чтобы apache прослушивал порт 80 для HTTP-трафика и на портах 443 и, скажем, 1234 для HTTPS-соединений?

Здесь несколько задач:

  1. Убедитесь, что модуль SSL загружен
  2. Слушайте другой порт для SSL - конкретно порт 1234
  3. Убедитесь, что default-ssl.conf сайт включен (или любой другой сайт, который вы хотите использовать для своего HTTPS-сайта)
  4. Сделайте так, чтобы виртуальный хост port-443 также обслуживался для второго порта - без простого копирования этого блока конфигурации

Вот как это сделать (как root):

  1. Вызвать a2enmod ssl (да, есть такая утилита)
  2. Добавить Listen 1234 прямо под Listen 443 в ports.conf
  3. Вызвать a2ensite default-ssl
  4. + Изменить <VirtualHost _default_:443> к <VirtualHost _default_:443 _default_:1234> в default-ssl.conf.

Тем не менее, есть (по крайней мере) одна проблема с вышеуказанным решением - каким-то волшебным образом вы можете разговаривать по HTTP с сервером на порту 443.

Примечание: Не надо вставить NameVirtualHost линии; если вы это сделаете, вы получите предупреждение:

AH00548: NameVirtualHost has no effect and will be removed in the next 
release /etc/apache2/ports.conf:6