【问题标题】:Setting up Apache mod_jk in ssl VirtualHost在 ssl VirtualHost 中设置 Apache mod_jk
【发布时间】:2016-05-04 06:10:09
【问题描述】:

我在将我的 Apache mod_jk 配置从它自己的 VirtualHost 配置移动到我的主 ssl VirtualHost 配置时遇到问题。

Tomcat 使用 mod_jk 和 VirtualHost 配置使用自己的域工作正常 - 工作配置....

LoadModule jk_module  /etc/httpd/modules/mod_jk.so
JkWorkersFile /etc/httpd/conf.d/workers.properties
JkShmFile     /var/log/httpd/mod_jk.shm
JkLogFile     /var/log/httpd/mod_jk.log
JkLogLevel    info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

<VirtualHost *:80>
    ServerName <my cname>
    DocumentRoot /opt/appserver/webapps/ROOT
    DirectoryIndex index_page.jsp       

    <Directory />
                Options FollowSymLinks
                AllowOverride None
    </Directory>

    <Directory /opt/appserver/webapps/ROOT>
                AllowOverride None
                Options FollowSymLinks
                Order allow,deny
                allow from all
    </Directory>

    JkMount /* ajp13
</VirtualHost>

但是,因为我想将我的 Tomcat 表单嵌入到我的 ssl 主服务器页面中(不能混合使用 http 和 https),我需要将我的 mod_jk 配置作为子文件夹移动到我的主 ssl VirtualHost 中。我尝试了以下更改,但在尝试访问 https:// 时出现 Tomcat 错误“HTTP 状态 404 - /servlet/”

新的服务器配置:

<VirtualHost _default_:443>

...lots of my main ssl server config stuff...

Alias /servlet /opt/appserver/webapps/ROOT

JkMount /servlet/* ajp13

<Directory /opt/appserver/webapps/ROOT>
        AllowOverride None
        Options FollowSymLinks
        Order allow,deny
        allow from all
        DirectoryIndex index_page.jsp
</Directory>

</VirtualHost>

【问题讨论】:

  • 请发布 mod-jk、httpd 和 tomcat 日志以了解确切问题
  • 页面请求没有 tomcat 日志。 ssl_access_log 中有一个 404 日志,但是呈现给浏览器的 404 消息来自于 tomcat(它有一个 'Apache Tomcat/7.0.59' 页脚)。

标签: apache mod-jk


【解决方案1】:
  1. 确保您的域证书生成准确
  2. 在 /etc/apache2/ 目录中复制 *key.pem 和 *cert.pem
  3. 写如下

<VirtualHost _default_:443> DocumentRoot "/opt/appserver/webapps/Your-Project-Directory" ServerName YourDomain.com ErrorLog "/var/log/apache2/https_YourDomain.com-error_log" CustomLog "/var/log/apache2/https_YourDomain.com-access_log" common SSLEngine On SSLCertificateFile /etc/apache2/*cert.pem SSLCertificateKeyFile /etc/apache2/*key.pem JkMountCopy On JkMount /* ajp13 </VirtualHost>

  1. 在 /etc/httpd/httpd.conf 文件中添加 Listen 443,只需在开头找到的 Listen 80 下添加这一行即可。

现在你可以同时访问 http 和 https

【讨论】:

  • 您的所有建议都已在我的配置中生效(我的...很多其他的东西...评论)。问题似乎是当 DocumentRoot 设置为 /opt/appserver/webapps/ROOT 时 mod_jk 正在工作,但是当我使用别名时它停止工作(可能,我的想法已经用完了)。
  • 您是否在 server.xml 文件中设置了虚拟主机?
【解决方案2】:

结果证明这是一个 Apache Alias 问题。实际上我无法让 mod_jk 与 Apache Alias 一起工作,所以我将 Tomcat 内容放在 Apache DirectoryRoot 中(原始配置,但打开了 ssl)并使用:

SetEnvIf Request_URI "/content/*" no-jk
Alias /content /path/to/content

启用非 Tomcat 内容。读者还应该检查(如果他们正在使用这种技术)他们是否已将“RewriteBase /content”添加到他们的 .htaccess 文件中。

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 2017-11-26
    • 2012-05-10
    • 2015-05-28
    • 2017-06-03
    • 1970-01-01
    • 2012-07-11
    • 2020-09-19
    • 2023-03-04
    相关资源
    最近更新 更多