【问题标题】:How to run multiple SSL enabled websites for local development using Apache如何使用 Apache 运行多个启用 SSL 的网站以进行本地开发
【发布时间】:2013-12-03 23:27:21
【问题描述】:

我正在开发几个网站,并通过虚拟服务器和不同的文档根目录将它们配置为基于端口进行访问。 IE。 localhost:8010 用于一个站点,localhost:8020 用于另一个站点。

在我有多个站点之前,SSL 仅在一个使用端口 80 和 443 的情况下运行良好。但是现在未受保护的站点可以正常加载,但是对于任何一个站点都无法建立 SSL 连接。它似乎也没有改变端口——当我点击以 https:// 开头的链接时,它会尝试转到 https://localhost:8010/secure/route

我可以使用https://localhost:8010/secure/route 之类的网址,或者根据站点自动升级到其他端口(即https://localhost:8011/project/one/secure/routehttps://localhost:8021/project/two/secure/route)或其他任何东西,只要我可以使用不同的端口和 SSL 在本地运行两个站点!

在我的 httpd.conf 我有:

Listen 8010
Listen 8020

还有:

<Directory "/path/to/project/one">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

<Directory "/path/to/project/two">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

在我的 httpd-vhosts.conf 我有:

<VirtualHost *:8010>
    ServerAdmin zugwalt@projectone.com
    DocumentRoot "/path/to/project/one"
    ServerName localhost:8010
    ErrorLog "logs/projectone-error.log"
    CustomLog "logs/projectone-access.log" common
</VirtualHost>

<VirtualHost *:8020>
    ServerAdmin zugwalt@projecttwo.com
    DocumentRoot "/path/to/project/two"
    ServerName localhost:8020
    ErrorLog "logs/projecttwo-error.log"
    CustomLog "logs/projecttwo-access.log" common
</VirtualHost>

在我的 httpd-ssl.conf 我有:

Listen 443

<VirtualHost *:443>
    DocumentRoot "/path/to/project/one"
    ServerName localhost:8010
    SSLEngine on
    SSLCertificateFile /path/to/ssl/server.crt
    SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "/path/to/project/two"
    ServerName localhost:8020
    SSLEngine on
    SSLCertificateFile /path/to/ssl/server.crt
    SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>

我在 Windows 7 上使用 Apache 2.4

【问题讨论】:

    标签: apache ssl https localhost multiple-sites


    【解决方案1】:

    您将两个虚拟主机都定义为端口 443 &lt;VirtualHost *:443&gt;,但您没有每个虚拟主机的真实 dns 主机名! 您将服务器名称设置为 localhost:8010 和 8020 - 这不起作用,因为端口不是 dns 名称的一部分!

    您必须拥有不同的服务器名称,例如 ssl1.example.com 和 ssl2.example.com - 另一方面,您可以为 ssl 定义不同的端口,就像为纯 http 所做的那样:

    <VirtualHost *:8110>
      DocumentRoot "/path/to/project/one"
      ServerName localhost
      SSLEngine on
      SSLCertificateFile /path/to/ssl/server.crt
      SSLCertificateKeyFile /path/to/ssl/server.key
    </VirtualHost>
    
    <VirtualHost *:8120>
      DocumentRoot "/path/to/project/two"
      ServerName localhost
      SSLEngine on
      SSLCertificateFile /path/to/ssl/server.crt
      SSLCertificateKeyFile /path/to/ssl/server.key
    </VirtualHost>
    

    然后在浏览器中使用端口:

    https://localhost:8110

    【讨论】:

      猜你喜欢
      • 2017-09-30
      • 2016-01-24
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      相关资源
      最近更新 更多