如何仅在特定位置启用 SSL

如何仅在特定位置启用 SSL

我有一个 Apache,它既为应用程序提供服务,也为 Web 服务提供服务。我希望 Web 服务通过 https,但应用程序通过 http。如何仅在特定位置启用 SSL?SSL 指令似乎在

<Location> </Location>

目前我有

<IfModule ssl_module>
        ServerName www.myserver.com
        SSLEngine on
        SSLCACertificateFile "/usr1/apache/conf/ssl/CAList.pem"
        SSLCertificateFile "/usr1/apache/conf/ssl/mine.crt"
        SSLCertificateKeyFile "/usr1/apache/conf/ssl/mine.pem"
        SSLVerifyClient require
</IfModule>

但是这会在我不想要 SSL 的页面上启用 SSL。

答案1

HTTPS 需要在 vhost 级别设置,因为它使用不同的端口(端口 443 而 HTTP 为端口 80)。

所以你必须为整个网站设置 HTTPS。

您可以做的是使用重定向(针对一个页面)、RedirectMatch(针对与模式匹配的多个页面)或重写(针对包含或排除特定条件的更复杂的查询)强制某些 URL 使用 HTTPS(甚至 HTTP)。

所以如果有人去http://www.example.com/login然后你可以将其重定向到https://www.example.com/login

您还可以重定向回来,这样如果有人访问https://www.example.com/normal-page然后重定向回 http。请注意,要做到这一点,访问者需要经历完整的 https 连接协商,因为重定向与普通页面相同,因为它是在 https 会话建立后返回的。

互联网正在迅速转向完全 HTTPS 世界。在整个网站上使用 HTTPS 有很多好处,与混合网站相比,它大大降低了复杂性。某些功能(例如从浏览器获取位置)仅在 Chrome 中通过 HTTPS 运行,而且这种情况只会增加。另一个例子是 HTTP/2 仅在所有浏览器上通过 HTTPS 运行。

同时,如果您的部分网站使用 HTTPS,HTTPS 的缺点几乎不存在(因此必须实际设置 HTTPS,这可能很复杂,因此是主要缺点)。 是的,对初始加载时间有一点影响,但之后,如果设置正确,除非在真正古老的硬件上运行或提供大量文件,否则几乎没有明显的性能影响。

如果要经历设置 HTTPS 的麻烦,我强烈建议像 EEAA 建议的那样在任何地方使用它。

相关内容