好
所以我httpd前一段时间安装了Apache ,并且最近回到它尝试设置SSL并让它为几个不同的tomcat服务器提供服务.
目前我有两个完全独立的Tomcat实例,提供略有不同的版本(一个用于开发,一个用于演示)我的Web应用程序到两个不同的端口:
example.com:8081example.com:8082我已经成功(一月后)用于mod_jk获取httpd服务同样的Tomcat实例http://www.example.com:8090/dev和http://www.example.com:8090/demo (8090只因为我已经有了8080通过码头在这一阶段运行的其他应用程序)在使用下面的代码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>
Run Code Online (Sandbox Code Playgroud)
我不想做的是启用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>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试重新启动Apache时apachectl restart(是的,关闭我提到的其他应用程序,所以它没有玩具有https连接)我不断得到错误:
无效命令'SSLEngine',可能由服务器配置中未包含的模块拼写错误或定义.httpd没有运行,试图启动
我看了一下httpd/modulesdir,确实没有mod_ssl,只有mod_jk.so和httpd.exp.
我已经尝试使用yum进行安装mod_ssl,它说它已经安装好了.事实上,我能找到mod_ssl.so的/usr/lib/httpd/modules,但是这不是路径,我安装位置httpd是/opt/httpd,实际上/usr/lib/httpd包含了什么,但modules目录.
任何人都可以告诉我如何mod_ssl正确安装我的安装位置,httpd所以我可以通过这个错误?
Sha*_*rpC 92
我发现我需要在Apache中启用SSL模块(sudo如果你没有以root身份运行,显然需要使用前缀命令):
a2enmod ssl
Run Code Online (Sandbox Code Playgroud)
然后重启Apache:
/etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)
这里有关于Ubuntu/Debian的Apache的SSL的更多细节.
小智 33
是否有其他LoadModule命令引用/usr/lib/httpd/modules文件夹中的模块?如果是这样,您只需添加LoadModule ssl_module /usr/lib/httpd/modules/mod_ssl.so到您的conf文件即可.
否则,您将要将mod_ssl.so文件复制到其他模块的加载目录,并在那里引用它.
vee*_*er7 17
尝试使用以下命令安装mod_ssl:
yum install mod_ssl
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令重新加载并重新启动Apache服务器:
systemctl reload httpd.service
systemctl restart httpd.service
Run Code Online (Sandbox Code Playgroud)
这适用于大多数情况.
我用了:
sudo yum install mod24_ssl
Run Code Online (Sandbox Code Playgroud)
它在我的 Amazon Linux AMI 中运行正常。