我有一个服务器(
linux base),我在其中安装了dotcms,它在端口80上运行,openssl在端口443上.两者都在运行过程中启动.最近我在我的服务器上安装了apache.当我启动apache时它会卡住,因为apache上的默认ssl端口是443而apache是80,它们都已经运行了.仅仅为了我的任务,我在端口90上只启动了没有ssl的apache.但是我想用apache启动ssl,显然在不同的端口上.是否可以使用相同的openssl绑定apache ssl?
我在运行过程中需要我的默认dotcms我无法在任何情况下停止它,我只能在需要apache启动时重新启动我的dotcms服务.但我需要dotcms和apache来并行运行.
看到该链接上的图片(由于声誉较低,我无法上传图片)
http://developers89.byethost14.com/images/ssl.png
解决方法
是的,可以将Apache绑定到不同的端口并仍然使用SSL.
替换apache配置中的Listen指令.配置应包含类似的行
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定义.