Я уверен, что об этом уже спрашивали, но ни один из ответов не работает для меня.
У меня есть домен domain.com
. У меня есть поддомен sub.domain.com
на том же IP. В таком случае sub.domain.com
запись CNAME, указывающая на domain.com
. У меня на этом сервере работает apache. У меня есть правило mod_rewrite в sites-available / default, которое перенаправляет все соединения, отличные от ssl, на ssl:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Пока это работает нормально. Если я подключусь к http://domain.com/foo
Меня направляют к https://domain.com/foo
с рабочим ssl.
Однако теперь у меня есть второй веб-сервер, работающий на этом сервере на другом порту, который я хочу сделать доступным через sub.domain.com
. Я создал запись CNAME, указывающую sub.domain.com
к domain.com
поэтому оба имеют одинаковый IP-адрес. Я могу установить ssl-соединение со вторым сервером в https://domain.com:port
и он отлично работает.
Насколько я могу судить, приведенный выше материал mod_rewrite не должен вызывать никаких проблем, потому что, если я подключусь к http://sub.domain.com
Сначала меня перенаправят на https://sub.domain.com
и затем это должно быть передано через прокси на второй веб-сервер.
Каждый учебник в блоге и ответ serverfault, за которым я следил, оставили мне конфигурации, которые либо отправляют все на domain.com
или дать мне ошибки подтверждения ssl, когда я пытаюсь подключиться к sub.domain.com
или domain.com
.
Может ли кто-нибудь показать мне, как это правильно сделать, и объяснить, почему это работает?
Я предполагаю, что ваш субдомен находится не на том же виртуальном хосте, что и ваш домен. В этом случае добавление правила перезаписи к виртуальному хосту по умолчанию не будет иметь никакого эффекта; вам также необходимо установить правило перезаписи в файле конфигурации vhost для вашего поддомена (оно также должно быть в sites-available, если это ваш вариант по умолчанию, хотя имейте в виду, что это debianism, а не все установки apache, с которыми вы сталкиваетесь будет так).
Строки, которые у вас есть для конфигурации RewriteEngine, верны и должны работать, если они также скопированы в другой файл.