У меня есть следующая конфигурация моего локального сервера Apache:
<VirtualHost mysite.local:443>
ServerName mysite.local
SSLEngine on
SSLCertificateFile "/Users/graziano/Projects/mysite/ssl/mysite.local.pem"
SSLCertificateKeyFile "/Users/graziano/Projects/mysite/ssl/mysite.local-key.pem"
SSLProxyEngine On
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
<VirtualHost access.mysite.local:443>
ServerName access.mysite.local
DocumentRoot "/Users/graziano/Projects/mysite/mysite-backend"
SSLEngine on
SSLCertificateFile "/Users/graziano/Projects/mysite/ssl/access.mysite.local.pem"
SSLCertificateKeyFile "/Users/graziano/Projects/mysite/ssl/access.mysite.local-key.pem"
</VirtualHost>
Вот мои хосты:
127.0.0.1 localhost
127.0.0.1 mysite.local
127.0.0.1 access.mysite.local
Я сгенерировал файлы сертификатов, используя этот фантастический инструмент .
Когда я захожу на https : //mysite.local
, я правильно перенаправлен на localhost:3000
(который обслуживает приложение Next.js), но если я нажимаю https: //access.mysite.local
(это установка Wordpress), Google Chrome жалуется, что соединение небезопасно:
NET::ERR_CERT_COMMON_NAME_INVALID
Если я инвертирую две директивы VirtualHost
, т.е. перемещаю нижнюю директиву вверх и наоборот, то https: //access.mysite.local
работает, но затем https: //mysite.local
не работает и дает ту же ошибку выше.
Мне нужно выполнить эту работу, чтобы проверить файлы cookie аутентификации, совместно используемые приложением Next.js и установкой Wordpress.
Если вам нужно простое перенаправление, возможно, вам лучше сделать это следующим образом и пропустить запрос mod_proxy:
Перенаправить 301 / https: // localhost: 3000 /
В противном случае эта строка не требуется:
ProxyPassReverse / http: // localhost: 3000 /
На удаленном сервере (localhost: 3000) вы, вероятно, захотите добавить следующую строку в свою конфигурацию vhost:
SetEnvIf X-Forwarded-Proto https HTTPS = on
На вашем прокси-сервере вы можете добавить следующие строки:
ProxyPreserveHost на
RequestHeader устанавливает X-Forwarded-Proto "https"
Я также предлагаю прочитать этот пост:
Как я могу проверить, является ли мой сервер Apache открытым прокси?
Относительно конфигурации вашего виртуального хоста:
Я бы заменил mysite.local и access.mysite.local на * или IP-адрес (например, 127.0.0.1) в первой строке, сделав iit:
<VirtualHost *:443>
Затем перезагрузите Apache ...