【问题标题】:Running SSL and non-SSL sites simultaneously with MAMP (4.0.6)使用 MAMP (4.0.6) 同时运行 SSL 和非 SSL 站点
【发布时间】:2017-04-17 07:26:47
【问题描述】:

为了启用 SSL,我在 httpd.conf 中取消了对这一行的注释:

# Secure (SSL/TLS) connections
Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf

httpd-ssl.conf 文件本身我保持不变,并在默认情况下为自签名 SSL 证书创建了 .crt 和 .key 文件:

SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key"

回到主 httpd.conf,我为我想使用 SSL 的站点创建了一个 VirtualHost,并像这样配置以最终让它工作:

NameVirtualHost *
<VirtualHost *>
DocumentRoot "/Users/jonnott/Documents/sslsite1.dev"
ServerName sslsite1.dev:443
ServerAlias www.sslsite1.dev
SSLEngine on
SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key"
</VirtualHost>

这个 SSL 站点现在可以正常工作了。

但是,我遇到的问题是,现在每当我尝试访问任何本地非 SSL 主机时,都会收到此错误:

Bad Request

Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.

这些其他非 SSL 站点在 httpd.conf 中配置如下:

<VirtualHost *> 
DocumentRoot "/Users/jonnott/Documents/site2.dev"
ServerName site2.dev
ServerAlias www.site2.dev
</VirtualHost>

我错过了什么/做错了什么?

【问题讨论】:

  • 尝试将启用 SSL 的虚拟主机限制为端口 443。使用 &lt;VirtualHost *:443&gt; 而不是 &lt;VirtualHost *&gt;
  • 要继续@AnandBhat 所说的,您需要两个虚拟主机:一个用于 http,另一个用于 https。请参阅 serverfault.com/a/253247/367929 了解其外观示例。
  • @AnandBhat 这并没有什么不同,不幸的是:(
  • @DavidDuponchel 我知道我需要不同的虚拟主机,但我的问题是,如果我的 httpd.conf 包含 httd-ssl.conf,那么我所有的非 SSL 主机都会收到 400 Bad Request 响应.
  • 在默认的 httpd-ssl.conf 中有一个 VirtualHost 指令&lt;VirtualHost _default_:443&gt; ... &lt;/VirtualHost&gt;,但是如果我完全删除它,那么 SSL 将停止工作(并且我的非 SSL 主机再次正常)。我不知道_default_的意义是什么,也不知道常规的httpd.conf中有_default_的对应指令??

标签: apache ssl mamp virtualhost httpd.conf


【解决方案1】:

我想我读完这篇文章后就明白了:

http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts2

在我的 VirtualHost 指令开始之前,我的 httpd.conf 中需要这两个:

NameVirtualHost *:80
NameVirtualHost *:443

..然后每个虚拟主机都需要特定于端口:

<VirtualHost *:80>
DocumentRoot "/Users/jonnott/Documents/Projects/site1"
ServerName site1.dev:80
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/Users/jonnott/Documents/Projects/site1"
ServerName site1.dev:443
SSLEngine on
SSLCertificateFile "/Applications/MAMP/conf/apache/server.crt"
SSLCertificateKeyFile "/Applications/MAMP/conf/apache/server.key"
</VirtualHost>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 2011-07-13
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2011-06-10
    相关资源
    最近更新 更多