好的
所以我在一段时间之前安装了Apache,最近又回来尝试设置httpd
,并让它服务于几个不同的tomcat服务器。
目前,我有两个完全独立的Tomcat实例,为两个不同的端口提供服务(一个用于开发,另一个用于演示)。
example.com:8081
example.com:8082
我已经成功地(早在1月份)使用mod_jk
让httpd
为http://www.example.com:8090/dev
和http://www.example.com:8090/demo
(8090,因为我在这个阶段通过Jetty在8080上运行了另一个应用程序)提供相同的Tomcat实例,使用了httpd.conf
中的以下代码
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
<VirtualHost *:8090>
JkMount /devd* tomcatDev
JkMount /demo* tomcatDemo
</VirtualHost>
我不想做的是启用SSL。
我在httpd.conf
中添加了以下内容
Listen 443
<VirtualHost _default_:443>
JkMount /dev* tomcatDev
JkMount /demo* tomcatDemo
SSLEngine on
SSLCertificateFile "/opt/httpd/conf/localhost.crt"
SSLCertificateKeyFile "/opt/httpd/conf/keystore.key"
</VirtualHost>
但是,当我尝试用apachectl restart
重启Apache时(是的,在关闭了我提到的另一个应用程序之后,它就不会玩弄https连接了),我不断地得到这个错误:
无效的命令'SSLEngine',可能拼写错误或由服务器配置中未包括的模块定义。httpd未运行,正在尝试启动
我查看了httpd/modules
目录,确实没有mod_ssl
,只有mod_jk.so
和httpd.exp
。
我试过用yum安装mod_ssl
,它说已经安装了。实际上,我可以在/usr/lib/httpd/modules
中找到mod_ssl.so
,但这不是我安装httpd
的路径,它是/opt/httpd
,实际上/usr/lib/httpd
只包含modules
目录。
谁能告诉我如何在我的httpd
安装位置正确地安装mod_ssl
,这样我就可以克服这个错误?
发布于 2011-03-10 22:18:03
是否有其他LoadModule
命令引用/usr/lib/httpd/modules
文件夹中的模块?如果是这样的话,只需将LoadModule ssl_module /usr/lib/httpd/modules/mod_ssl.so
添加到您的配置文件中就可以了。
否则,您需要将mod_ssl.so
文件复制到从中加载其他模块的任何目录,并在那里引用它。
发布于 2013-06-26 20:00:17
我发现我需要在Apache中启用SSL模块(如果您不是以根用户身份运行,则显然需要在命令前加上sudo
):
a2enmod ssl
然后重新启动Apache:
/etc/init.d/apache2 restart
更多关于Apache for Ubuntu / Debian here中SSL的详细信息。
发布于 2016-10-05 20:20:07
尝试使用以下命令安装mod_ssl
:
yum install mod_ssl
然后使用以下命令重新加载并重新启动Apache服务器:
systemctl reload httpd.service
systemctl restart httpd.service
这应该适用于大多数情况。
https://stackoverflow.com/questions/5257974
复制相似问题