собственно столкнулся с непонятным поведением apacheЕсть два виртуалхоста
<VirtualHost *:443>
ServerName blog.example.com
DocumentRoot /vhosts/blog.example.com
SSLCertificateFile blog.example.com.crt
...
</VirtualHost><VirtualHost *:443>
ServerName example.com
ServerAlias *.example.com
DocumentRoot /vhosts/example.comSSLCertificateFile example.com.crt
...
</VirtualHost>
Во втором виртуалхосте используется wildcard сертификатНа сервере один ip адрес, т.е. используется SNI. Так вот, когда я набираю https://blog.example.com и https://example.com все работает корректно и отдается соответствующий сертификат для каждого из хостов. Но при попытке открыть https://www.example.com почему то отдается сертификат первого хоста, т.е. от блога, который является дефолтным.
Собственно вопрос, почему запрос попадает в первый виртуальный хост, а не во второй под условие ServerAlias *.example.com ?
CentOS 6,
# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Oct 16 2014 14:48:21Проверял на win 7, chrome 43.x
Оказывается виной всему было указание порта в ServerAlias. При этом, что интересно, никаких ошибок или хотя бы предупреждений в логах. Т.е. apache просто игнорировал директиву ServerAlias.
> Оказывается виной всему было указание порта в ServerAlias. При этом, что интересно,
> никаких ошибок или хотя бы предупреждений в логах. Т.е. apache просто
> игнорировал директиву ServerAlias.Дело не в порте,а сервере по умолчанию. Учитывая что blog.example.com в конфиге указан первым, то при любом обращении www.example.com будет отрабатывать сервер по умолчанию, т.е. blog.example.com
Побольше курите доку по httpd (http://httpd.apache.org/docs/2.4/vhosts/examples.html):
The asterisks match all addresses, so the main server serves no requests. Due to the fact that the virtual host with ServerName www.example.com is first in the configuration file, it has the highest priority and can be seen as the default or primary server. That means that if a request is received that does not match one of the specified ServerName directives, it will be served by this first VirtualHost.
> Дело не в порте,а сервере по умолчанию. Учитывая что blog.example.com в конфиге
> указан первым, то при любом обращении www.example.com будет отрабатывать сервер по
> умолчанию, т.е. blog.example.comс какого это перепуга? У меня был ServerAlias с wildcard под который и должен был попадать www.example.com. Но так как, какие то криворукие ребята прописали там порт, то директива ServerAlias просто игнорировалась, но при этом никаких ошибок или предупреждений в логах не было, что меня собственно и смутило. И тогда, apache не найдя точного соответствия - открывал дефолтный хост.
Как только я убрал порт в ServerAlias все сразу заработало так, как и предполагалось, т.е. www стал попадать во второй виртуальный хост