3

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

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

只要我可以使用不同的端口和 SSL 在本地运行两个站点,我就可以使用喜欢工作的 url https://localhost:8010/secure/route,或者根据站点自动升级到其他端口(即https://localhost:8011/project/one/secure/route, )或其他方式!https://localhost:8021/project/two/secure/route

在我的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

4

1 回答 1

0

您将两个虚拟主机都定义在端口 443 上<VirtualHost *:443>,但每个虚拟主机都没有真正的 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

于 2019-07-30T07:38:08.660 回答