gpt4 book ai didi

apache - Tomcat/Apache/Grails 配置

转载 作者:行者123 更新时间:2023-11-28 23:52:36 25 4
gpt4 key购买 nike

希望有人可以提供帮助/建议,因为我对 Apache/Tomcat 不是很熟悉。我已经在 Tomcat 前面安装了 Apache,并部署了 grails 应用程序。我有 IIs 设置(由其他人设置),它将 www.xyz.com/myApp 重定向到运行 grails 应用程序的 Apache 实例。在我的 apache conf 中我有一个代理 ..

ProxyPass /myApp http://localhost:8080/myApp
ProxyPassReverse /myApp http://localhost:8080/myApp

我在 tomcat server.xml 中定义了一个连接器

<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
proxyName="www.xyz.com"
proxyPort="443" />

这没有问题

我现在想添加另一个应用程序,所以在 IIS 中我已经为我设置了 www.xyz.com/myOtherApp

ProxyPass /myOtherApp http://localhost:8081/anotherApp
ProxyPassReverse /myOtherApp http://localhost:8081/anotherApp

在我的 Apache conf 中我添加了另一个连接器

<Connector port="8081" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
proxyName="www.xyz.com"
proxyPort="443" />

当我访问 www.xyz.com/myOtherApp 时,我得到的 url 呈现(我认为是正确的)为 https://www.xyz.com/anotherApp但是有一个 404 错误说“找不到对象”..

谁能帮我配置一下?是否可以在不同的端口上有 2 个连接器使用相同的代理名称?正如我所说,我不熟悉 Apache/Tomcat,我真的很想尽快完成这项工作 ..

谢谢

您好@Stefan,这些应用程序确实存在于同一服务器和域中,因此我删除了一个连接器定义。我现在剩下

<Server port="8005" shutdown="SHUTDOWN">

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

<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" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
proxyName="www.xyz.com"
proxyPort="443" />

<Engine name="Catalina" defaultHost="localhost">

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>

<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

</Host>

</Engine>

</Service>

</Server>

我还打开了日志记录 (JULI),但它似乎没有报告任何内容。 Apache 错误日志只给我一个 404 .. 我将其保留为 HTTP 而不是 AJP,因为我必须设置 HTTPS,但我不确定这有多容易。所以我留下了同样的问题,一个应用程序工作,另一个不工作.. 是否可以通过 http 运行多个 grails 应用程序而不是使用 ajp 和虚拟主机?如果我很愚蠢,请原谅我——我没有太多接触过网络应用程序,而且我似乎已经停止了我认为应该相对容易的东西——部署!

最佳答案

如果你想在Tomcat前面使用Apache,最好使用mod_proxy_ajp而不是mod_proxy_http。有关设置,请参阅 https://confluence.sakaiproject.org/display/~steve.swinsburg/Fronting+Tomcat+with+Apache+via+mod_proxy_ajp .

不好意思补充

   ProxyRequests Off
<Proxy *>
Order deny,allow
Deny from all
Allow from localhost
</Proxy>

到您的配置以防止滥用代理。

如果/myApp 和/myOtherApp 位于同一个 tomcat engine ,两个应用程序只需要一个连接器。除此之外,我在您的设置中看不到明显的错误。也许您可以发布您的 tomcat 的 server.xml。在处理配置期间,使用 LogLevel Debug 可能是个好主意。

关于apache - Tomcat/Apache/Grails 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6333817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com