繁体   English   中英

Tomcat / Apache / Grails 配置

[英]Tomcat / Apache / Grails Config

Hoping someone can help / advise as i'm not very familiar with Apache / Tomcat.. I already have Apache in front of Tomcat with grails app deployed. 我有 IIs 设置(由其他人),它将 www.xyz.com/myApp 重定向到运行 grails 应用程序的 Apache 实例。 在我的 apache conf 我有一个代理..

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

我在我的 tomcat 服务器中定义了一个连接器。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" />

When i go to www.xyz.com/myOtherApp i get the url rendered (correctly i think) as https://www.xyz.com/anotherApp but with a 404 error saying "Object not Found"..

谁能帮我配置一下? 是否可以在具有相同 proxyName 的不同端口上有 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 引擎中,则两个应用程序只需要一个连接器。 除此之外,我在您的设置中看不到明显的错误。 也许你可以发布你的tomcat的server.xml。 在配置工作期间,使用LogLevel Debug可能是一个好主意。

这不是您问题的直接答案,但我之前在 Apache 后面配置了 Tomcat 并且我遇到了问题。

我现在使用Amazons Elastic beanstalk ...您可以在其中直接部署 grails 应用程序战争文件。 它工作得很好,尤其是内置的自动缩放和健康监控!

更少的配置 == 轻松的生活。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM