我已经搜索了一段时间,但找不到具体答案。我在 CentOS 环境中配置了一个服务器,在我的 vhost.conf 中有以下配置:
<VirtualHost *:80>
DocumentRoot /xyz/dir
DirectoryIndex index.html index.php
CustomLog /var/log/xyz/access.log common
ErrorLog /var/log/xyz/error.log
<Directory /xyz/dir>
Options +Includes +FollowSymLinks -Indexes -ExecCGI
AllowOverride FileInfo AuthConfig
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:83>
DocumentRoot /abc/dir
DirectoryIndex index.html index.php
CustomLog /var/log/abc/access.log common
ErrorLog /var/log/abc/error.log
<Directory /abc/dir>
Options +Includes +FollowSymLinks -Indexes -ExecCGI
AllowOverride FileInfo AuthConfig
Require all granted
</Directory>
</VirtualHost>
如您所见,我已在具有相同 IP 的不同端口上配置了 2 个站点。现在,我尝试在两个站点上配置 SSL,我希望在两个站点上同时激活 http 和 https。
我进行了一些搜索并使用 ssl 进行了配置,并添加了以下内容:-
<VirtualHost _default_:443>
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM:+SSLv3
SSLCACertificateFile /path-to-ca-bundle
SSLCertificateFile /path-to-crt
SSLCertificateKeyFile path-to-key
SSLVerifyClient none
SSLVerifyDepth 10
DocumentRoot /xyz/dir
ServerName 1.1.1.1:80
DirectoryIndex index.html index.php
CustomLog /var/log/xyz/access.log common
ErrorLog /var/log/xyz/error.log
<Directory /xyz/dir>
Options +Includes +FollowSymLinks -Indexes -ExecCGI
AllowOverride FileInfo AuthConfig
Require all granted
</Directory>
</VirtualHost>
# Did the same for :83
现在当我点击时这工作正常
https://1.1.1.1/ --> points to xyz
http://1.1.1.1/ --> points to xyz
http://1.1.1.1:83/ --> points to abc
https://1.1.1.1:83/ --> throws ssl_error_rx_record_too_long error
:83 上的 https 不起作用。需要帮助!
相反https://1.1.1.1:80/ --> throws ssl_error_rx_record_too_long error
https://1.1.1.1/ --> works just fine and points to xyz
答案1
实际上,您不能在同一端口上运行 HTTP 和 HTTPS 服务。这就是为什么两种协议的默认端口不同(分别为 80 和 443)。这意味着端口 83 上的服务可以任何一个HTTP或者HTTPS,但不能同时使用。您需要选择一个单独的端口以用于其他协议。