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

MAMP - имя хоста изменяется на первую запись SSL vhost для проекта с двумя локальными хостами

У меня есть два проекта, которые являются копией друг друга на моем Mac с MAMP. У них обоих есть страницы SSL. Однако всякий раз, когда я попадаю на защищенную SSL-страницу проекта 2, base_url или host меняются на project1 вместо оставшегося project2. Я знаю, что это проблема с vhosts, потому что, если я изменю порядок записей, произойдет обратное. Вот мои файлы конфигурации:

    /Applications/MAMP/conf/extra/httpd-ssl.conf


<VirtualHost _default_:443>
DocumentRoot "/Applications/MAMP/htdocs/proj1"
ServerName proj1.localhost:443
ErrorLog "/Applications/MAMP/Library/logs/error_log"
TransferLog "/Applications/MAMP/Library/logs/access_log"
SSLEngine on
SSLCertificateFile "/Applications/MAMP/conf/apache/ssl/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/ssl/server.key"
</VirtualHost> 

<VirtualHost _default_:443>
DocumentRoot "/Applications/MAMP/htdocs/proj2"
ServerName proj2.localhost:443
ErrorLog "/Applications/MAMP/Library/logs/error_log"
TransferLog "/Applications/MAMP/Library/logs/access_log"

SSLEngine on
SSLCertificateFile "/Applications/MAMP/conf/apache/ssl/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/ssl/server.key"
</VirtualHost> 

--------------------
cat /etc/hosts

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0 localhost

127.0.0.1 proj1.localhost
127.0.0.1 proj2.localhost

Изменить

<VirtualHost _default_:443>

к

<VirtualHost *:443>

Тогда убедитесь, что у вас есть

NameVirtualHost *:443

Затем перезапустите apache, и он должен работать

РЕДАКТИРОВАТЬ

Также вам не понадобится 443 дюйма ServerName proj1.localhost:443

Это связано с тем, что имя хоста отправляется в зашифрованном виде, а расшифровка SSL происходит внутри виртуального хоста, а не за его пределами. Это означает, что сервер не имеет доступа к имени хоста, когда он выбирает виртуальный хост, и поэтому он всегда будет выбирать первый. Вы можете прочитать об этом подробнее на wiki.apache.org