У нас есть два сайта: sub.example1.com и example2.com. Ни один из них не настроен специально для обработки ssl-запросов. Один сайт https: /sub.example1.com успешно обрабатывает безопасный запрос на порт 443, рассматривая его как HTTP-запрос. Безопасный запрос на другой сайт, https://example2.com, время ожидания истекает и регистрируется ошибка "\ x16 \ x03 \ x01" в журнале apache hte.
Вот конфигурация example1 в / etc / httpd / sites-enabled /
ServerAdmin webmaster @ localhost Имя сервера sub.example1.com
DocumentRoot /opt/example1/web/
DirectoryIndex index.php index.html
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /opt/example/web/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
</Directory>
ErrorLog /var/log/httpd/errorExample1.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/httpd/accessExample1.log combined
ServerSignature On
~
Например, нет файла .htaccess.
Вот конфигурация example2 в / etc / httpd / sites-enabled /
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.example2.com
DocumentRoot /opt/example2/web
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /opt/example2/web/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
</Directory>
ErrorLog /var/log/httpd/errorExample2.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/httpd/accessExample2.log combined
ServerSignature On
Вот, например, .htaccess2
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
httpd.conf
UseCanonicalName Off
NameVirtualHost *:80
# NameVirtualHost *:443
# Include generic snippets of statements
Include conf.d/*.conf
# Include the virtual host configurations:
Include /etc/httpd/sites-enabled/
conf.d / *. conf записи:
TraceEnable On
serverName.conf
ServerName ec2-xx-xx-xx-xxx.compute-1.amazonaws.com
welcome.conf
<LocationMatch "^/+$">
Options -Indexes
ErrorDocument 403 /error/noindex.html
</LocationMatch>
Я не могу понять, почему один переводит запрос https на http, а другой - нет. Любая помощь приветствуется.
Ни один из них не настроен специально для обработки ssl-запросов.
В этом случае никто не должен вообще прослушивать порт 443, т.е. браузер не должен даже подключаться к этому порту. Поскольку вы получаете ответы или сообщения об ошибках, браузер, очевидно, может подключиться к этому порту, поэтому очевидно, что что-то настроено для работы с этим портом. Но это может быть неправильно настроено на втором сервере.
Один сайт https: /sub.example1.com успешно обрабатывает безопасный запрос на порт 443, рассматривая его как HTTP-запрос.
Маловероятно, потому что клиент отправляет запрос HTTPS. Если бы там не было SSL (например, простой HTTP), подтверждение SSL от клиента завершилось бы ошибкой, и он не смог бы выполнить внутренний HTTP-запрос. Хотя вы не предоставляете полную информацию о настройке, возможно, что SSL включен глобально на этом сервере или что есть какой-то обратный прокси-сервер, выполняющий завершение SSL и пересылающий запрос как простой HTTP.
регистрирует ошибку "\ x16 \ x03 \ x01" в журнале apache.
«\ x16 \ x03 \ x01» - это первые байты подтверждения SSL / TLS. Это означает, что клиент пытается поговорить с сервером по протоколу HTTPS, что ожидается, если вы используете https://
URL. И, очевидно, сервер прослушивает порт, на который клиенты также отправляют запрос, потому что в противном случае TCP-соединение уже не удалось бы. С нормальным https://host/
запрос порта будет 443, что означает, что ваш сервер должен быть явно настроен для обработки простого HTTP на порту 443 (это не происходит ни само по себе, ни в настройке по умолчанию). Или вы действительно пробовали URL https://port:80/
и заставил браузер подключиться по HTTPS к порту, зарезервированному для обычного HTTP.
Я предполагаю, что проблемы в части настройки сервера, которую вы здесь не показываете.
вы можете добавить файл .htaccess в пример 1
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Пример 2 выглядит как wordpress, есть плагины wordpress для перенаправления http - возможно, он использует это