当前位置: 首页 > 知识库问答 >
问题:

Tomcat通过SSL支持Apache http pd(http pd工作,tomcat返回错误500)

孙斌
2023-03-14

我有一个tomcat,监听端口8080,还有一个apache httpd监听端口80和443。

httpd通过ajp将客户端代理给tomcat。这很有魅力。

上面引用的我的声明是错误的。我错误地假设我将代理设置为使用ajp协议,但我确实使用了纯http。这也引出了这个问题的答案。

但是,如果我试图通过https连接,我会得到一个安全的连接,它显示一个错误500,没有记录在任何地方。我的猜测是,https连接到http(443)工作,ajp-代理也工作,但tomcat期待一些我不知道的东西。

我已经尝试将代理连接到端口8443和8080。在我看来,在端口8080上访问tomcat就足够了,因为所有的流量都是通过httpd重定向的。

以下是配置:

/etc/apache2/sites-available/default-ssl

<IfModule mod_ssl.c>
    ErrorLog /var/log/apache2/ssl_engine.log
    LogLevel error

    NameVirtualHost *:443

    <VirtualHost *:443>
            ServerName www.doma.in
            ServerAlias doma.in

            ServerSignature Off
            SSLEngine on

            SSLCertificateFile /etc/ssl/certs/ssl_certificate.crt
            SSLCertificateKeyFile /etc/ssl/certs/ssl_certificate.key
            SSLCertificateChainFile /etc/ssl/certs/intermediate_ca.crt

            ProxyPass / ajp://localhost:8080/ retry=0 timeout=240
            ProxyPassReverse / ajp://localhost:8080/
    </VirtualHost>
</IfModule>

/etc/tomcat7/server。xml

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
    <Listener className="org.apache.catalina.core.JasperListener" />
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

    <GlobalNamingResources>
        <Resource name="UserDatabase" auth="Container"                    type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" />
    </GlobalNamingResources>

    <Service name="Catalina">
        <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" />

        <!-- Define an AJP 1.3 Connector on port 8009 -->
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URLEncoding="UTF-8" />
        <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8080" URLEncoding="UTF-8" /> also tried this, but same result. -->

        <Engine name="Catalina" defaultHost="localhost">
            <Realm className="org.apache.catalina.realm.LockOutRealm">
                <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
            </Realm>

            <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true"></Host>
        </Engine>
    </Service>
</Server>

不幸的是,我不能提供任何日志,因为错误没有出现在任何日志中。

有什么想法如何使这项工作?

真诚地

共有1个答案

费秦迟
2023-03-14

答案很简单。我不使用ajp,但在未加密的网站上做一个简单的超文本传输协议代理。

因此,最终有效的代码是:

<IfModule mod_ssl.c>
    ErrorLog /var/log/apache2/ssl_engine.log
    LogLevel error

    NameVirtualHost *:443

    <VirtualHost *:443>
            ServerName www.doma.in
            ServerAlias doma.in

            SSLEngine on
            SSLCertificateFile /etc/ssl/certs/ssl_certificate.crt
            SSLCertificateKeyFile /etc/ssl/certs/ssl_certificate.key
            SSLCertificateChainFile /etc/ssl/certs/intermediate_ca.crt

            ProxyPass / http://127.0.0.1:8080/
            ProxyPassReverse / http://127.0.0.1:8080/
    </VirtualHost>
</IfModule>

不过,就性能而言,ajp协议比这更可取。

 类似资料:
  • 我阅读了很多关于如何配置tomcat来使用SSL的教程。 我在http://localhost:8080和http://localhost:8443中访问我的应用程序,但我不能在https://localhost:8443中访问。 我用的是阿帕奇语。 key.keystore文件可以工作,因为它在其他JBoss应用程序中使用。 Bellow是server.xml配置中的新连接器。

  • 我尝试用JSF 2.3.3(Glassfish实现)测试新的WebSocket功能。我使用 Tomcat 9.0.1 作为 Web 服务器并遵循本指南(https://javaserverfaces.github.io/whats-new-in-jsf23.html) 我创建了一个托管bean: 更新的index.xhtml: 并更新了web.xml: 不幸的是,Tomcat加载应用程序失败,出现

  • 我们在windows 10机器上从Tomcat 9.0.29升级到9.0.44,并收到503条错误消息。Tomcat托管Java应用程序。对Tomcat服务器的请求作为工作线程从单独的Apache代理服务器通过端口8010发送。我可以看到Tomcat服务正在运行,Java应用程序正在启动并运行。这可以从Tomcat服务器上的//localhost:8080/{JavaApp}进行验证。 但是,来自

  • 我正在使用windows命令提示符,我刚刚安装了一个新的rails项目。我在尝试安装gem时出错了。上面写着 错误:找不到有效的gem“bundler” 我该如何解决这个问题?

  • 环境:Windows 2003 Server-64位 服务器名称:devtest.domain.local Apache Tomcat 6.0.36服务器-http://Tomcat.apache.org/(Windows) 孙Java JDK:jdk1.6.0_26 同时定义%CATALINA_HOME%和%JAVA_HOME%. 正在为我们的证书颁发机构生成CSR.. 是的,我知道服务器名:d

  • 问题内容: 我有一台运行Java servlet的Tomcat服务器。我正在尝试使一个servlet返回给定的加密ID的存储文件。 编号:100 加密的ID:+ e4 / E5cR / aM = 网址编码的ID:%2Be4%2FE5cR%2FaM%3D 结果URL:http:// localhost / file / demo /%2Be4%2FE5cR%2FaM%3D 当我尝试访问该链接时,我什