Недавно я обновился с Apache 2.2 до 2.4 (знаю, я медленно обновляюсь, не ненавидьте меня). У меня есть следующий виртуальный хост:
<VirtualHost _default_:30000>
DocumentRoot /opt/phpmyadmin
ErrorLog ${APACHE_LOG_DIR}/error.log
<Directory /opt/phpmyadmin>
Options -Indexes +IncludesNOEXEC +FollowSymLinks
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
LogLevel warn
</VirtualHost>
Раньше это работало с использованием Разрешить от всех
синтаксис, и HTTPS отлично работает для других виртуальных хостов на порту 443. Однако, когда я перехожу к https://локальный: 30000
, он обслуживает HTTP-контент вместо HTTPS. Это также единственный виртуальный хост, который использует порт 30000, поэтому я предполагаю, что это не может быть связано с конфликтами с другими виртуальными хостами, имеющими приоритет.
HTTPS-запрос:
$ curl -v https://localhost:30000
* Перестроенный URL-адрес: https://localhost:30000/
* Имя хоста НЕ было найдено в кеше DNS
* Попытка ::1...
* Подключен к локальному хосту (::1) порт 30000 (#0)
* успешно установить места проверки сертификата:
* CA-файл: нет
CApath: /etc/ssl/certs
* SSLv3, рукопожатие TLS, приветствие клиента (1):
* ошибка: 140770FC: подпрограммы SSL: SSL23_GET_SERVER_HELLO: неизвестный протокол
* Закрытие соединения 0
curl: (35) ошибка: 140770FC: процедуры SSL: SSL23_GET_SERVER_HELLO: неизвестный протокол
Затем в журнале доступа Apache появляется следующее:
127.0.0.1:80 XXX.XXX.XXX.149 - - [04/окт/2021:13:14:37 -0400] "\x16\x03\x01\x02" 400 0 "-" "-"
HTTP-запрос
$ curl -v http://localhost:30000
* URL перестроен на: http://localhost:30000/
* Имя хоста НЕ было найдено в кеше DNS
* Попытка ::1...
* Подключен к локальному хосту (::1) порт 30000 (#0)
> ПОЛУЧИТЬ/HTTP/1.1
> Агент пользователя: curl/7.38.0
> Хост: локальный: 30000
> Принять: */*
>
< HTTP/1.1 200 ОК
< Дата: понедельник, 04 октября 2021 г., 16:47:46 по Гринвичу
* Сервер Apache не занесен в черный список
< Сервер: Апач
< Варьировать: Accept-Encoding
< Длина контента: 481
< Тип содержимого: текст/html; набор символов = UTF-8
<
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<голова>
<title>Индекс /</title>
</голова>
<тело>
<h1>Индекс /</h1>
<таблица>
<tr><th valign="top"><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O= D">Название</a></th><th><a href="?C=M;O=A">Последнее изменение</a></th><th><a href="?C =S;O=A">Размер</a></th><th><a href="?C=D;O=A">Описание</a></th></tr>
<tr><th colspan="5"><hr></th></tr>
<tr><th colspan="5"><hr></th></tr>
</таблица>
</тело></html>
Редактировать:
Я только что заметил одну вещь. У меня есть -Индексы
установлен, но возвращаемый HTTP-контент является индексом каталога. Поэтому я думаю, что, возможно, каким-то образом используется другой виртуальный хост. Я до сих пор не знаю, как это возможно, поскольку это единственный порт, использующий порт 30000.