我有一台服务器(基于 Linux),我在其中安装了 dotcms,它在端口 80 上运行,openssl 在端口 443 上运行。两者都在运行过程中启动。最近,我在服务器上安装了 apache。当我启动 apache 时,它卡住了,因为 apache 上的默认 ssl 端口是 443,而 apache 是 80,它们都已在运行。仅出于我的任务,我只启动了 apache,而没有在端口 90 上使用 ssl。但我想在不同的端口上启动 apache 的 ssl。是否可以将 apache ssl 与相同的 openssl 绑定?
我需要在运行过程中使用默认的 dotcms,无论如何我都无法停止它,如果需要启动 apache,我只能重新启动我的 dotcms 服务。但我需要 dotcms 和 apache 并行运行。
参见该链接上的图片(由于声誉较低,我无法上传图片) http://developers89.byethost14.com/images/ssl.png
答案1
是的,可以将 Apache 绑定到不同的端口并仍然使用 SSL。
替换Listen
Apache 配置中的指令。配置应包含类似以下行
Listen 80
Listen 443
Apache 将监听这些配置选项定义的端口。替换它们,Apache 将监听其他端口。
但是,您仍然需要告诉 Apache 在上述端口上提供什么服务。假设您希望 Apache 开始监听端口 8080(纯端口)和 4433(ssl)。那么您需要将 Listen 指令替换为
Listen 8080
Listen 4433
此后,在这些端口上定义两个 VirtualHost,如下所示:
NameVirtualHost 0.0.0.0:8080
NameVirtualHost 0.0.0.0:4433
<VirtualHost 0.0.0.0:8080>
ServerName the.server.name
ServerAlias *
DocumentRoot /var/www/plain
</VirtualHost>
<VirtualHost 0.0.0.0:4433>
ServerName the.server.name
ServerAlias *
DocumentRoot /var/www/ssl
SSLEngine On
SSLCertificateFile /the/certificate/file
SSLCertificateKeyFile /the/key/file
</VirtualHost>
如果您没有更多 VirtualHost 定义,则不必包含该ServerAlias
指令(或ServerName
)。
如果您重新启动 Apache,它将在 8080 上监听未加密的连接,并在端口 4433 上监听 SSL。请确保没有任何旧的 VirtualHost 定义包含错误的端口号。