У меня есть следующая конфигурация моего локального сервера 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: // локальный: 3000 /
В противном случае эта строка не требуется:
ProxyPassReverse / http: // локальный: 3000 /
На вашем удаленном сервере (localhost: 3000) вы, вероятно, захотите добавить следующую строку в свою конфигурацию vhost:
SetEnvIf X-Forwarded-Proto https HTTPS = on
На своем прокси вы можете добавить следующие строки:
ProxyPreserveHost On
RequestHeader устанавливает X-Forwarded-Proto "https"
Я также предлагаю прочитать этот пост:
Как я могу проверить, является ли мой сервер Apache открытым прокси?
Что касается конфигурации вашего виртуального хоста:
Я бы заменил mysite.local и access.mysite.local на * или IP-адрес (например, 127.0.0.1) в первой строке, сделав iit:
<VirtualHost *:443>
Затем перезагрузите Apache ...