无法使用 SSL 在本地设置域和子域

无法使用 SSL 在本地设置域和子域

我的本地 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又不工作,并出现上述相同的错误。

我需要完成这项工作来测试 Next.js 应用程序和 Wordpress 安装之间共享的身份验证 cookie。

答案1

如果你想要一个简单的重定向,你最好按照以下方式进行操作并跳过 mod_proxy 请求:
重定向 301 /https://本地主机:3000/

否则不需要此行:
ProxyPassReverse /http://本地主机:3000/

在您的远程服务器(localhost:3000)上,您可能需要在 vhost 配置中添加以下行:
SetEnvIf X-Forwarded-Proto https HTTPS=on

在您的代理上,您可能需要添加以下行:
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"

我还建议阅读这篇文章:
我如何测试我的 apache 服务器是否是开放代理?

关于您的 vhost 配置:
我会在第一行用 * 或 IP 地址(即 127.0.0.1)替换 mysite.local 和 access.mysite.local,使其:

<VirtualHost *:443>


然后重新加载 Apache...

相关内容