如何在apache子域后面屏蔽tomcat应用程序?

如何在apache子域后面屏蔽tomcat应用程序?,apache,tomcat,mod-rewrite,mod-proxy,Apache,Tomcat,Mod Rewrite,Mod Proxy,我有两个独立的服务器:一个Apache公共服务器和一个内部Tomcat服务器。我希望我们的用户能够使用我们的Tomcat应用程序,而无需通过公共Apache服务器公开我们的实现细节(实际端口、服务器名称、上下文),如下所示: 而不是 我如何配置我的Apache服务器以通过这种方式屏蔽对Tomcat应用程序的请求?使用诸如mod_rewrite或mod_proxy之类的Apache模块是最简单的方法吗 我已经在Apache中为VirtualHost尝试了这种配置,它适用于第一个servlet。

我有两个独立的服务器:一个Apache公共服务器和一个内部Tomcat服务器。我希望我们的用户能够使用我们的Tomcat应用程序,而无需通过公共Apache服务器公开我们的实现细节(实际端口、服务器名称、上下文),如下所示:

而不是

我如何配置我的Apache服务器以通过这种方式屏蔽对Tomcat应用程序的请求?使用诸如mod_rewrite或mod_proxy之类的Apache模块是最简单的方法吗

我已经在Apache中为VirtualHost尝试了这种配置,它适用于第一个servlet。但是,它似乎禁用了Tomcat,以保持从第一个servlet到之后的任何其他servlet的会话:


ServerName credits.publicdomain.com

ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>                        

ProxyPass        / http://tomcat.internaldomain.com:8082/CreditsApp/
ProxyPassReverse / http://tomcat.internaldomain.com:8082/CreditsApp/
ProxyRequests关闭
代理主机
命令拒绝,允许
通融
ProxyPass/http://tomcat.internaldomain.com:8082/CreditsApp/
ProxyPassReverse/http://tomcat.internaldomain.com:8082/CreditsApp/


为了在servlet之间没有上下文的情况下工作,我是否缺少Tomcat服务器中的一些额外配置

最好、最有效的方法是使用mod_jk:


我已经在几个项目中使用过它,并且发现它非常容易使用、有效、灵活且性能优异。它也是将Tomcat置于Apache之后的事实上的官方解决方案。

mod_jk是将Tomcat连接到Apache所需要的,因此您可以专注于应用程序 而Apache作为前端,可以处理https和身份验证等。它将某些URL转发给Tomcat中的“workers”。因此,您需要告诉Apache加载mod_jk,您需要配置worker.properties,Apache需要知道哪个worker做什么,您需要在Tomcat中定义一个服务

httpd.conf中的这些指令配置mod_jk:

<VirtualHost 192.0.34.72>
      ServerAdmin webmaster@ example.com
      DocumentRoot /www/www.example.com/webapps/ROOT
      ServerName www.example.com
      ErrorLog logs/public_errors
      LogLevel debug
      CustomLog logs/public_access combined
      JkMount /* worker1
      <Directory "/www/www. example.com/webapps/ROOT">
          Options Indexes FollowSymLinks Indexes
          AllowOverride None
          Order allow,deny
          Allow from all
     </Directory>
      <Location "/WEB-INF/">
          AllowOverride None
          deny from all
      </Location>
      <Location "/META-INF/">
          AllowOverride None
          deny from all
      </Location>
</VirtualHost>
<service name="public">
    <connector classname="org.apache.coyote.tomcat4.CoyoteConnector" port="8009" minprocessors="5" maxprocessors="75" enablelookups="true" redirectport="8443" acceptcount="10" debug="0" connectiontimeout="0" useurivalidationhack="false" protocolhandlerclassname="org.apache.jk.server.JkCoyoteHandler" /> 
    <engine name="Standalone" defaulthost="localhost" debug="0">
        <logger classname="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true" /> <realm classname="org.apache.catalina.realm.UserDatabaseRealm" debug="0" resourcename="UserDatabase" />  
        <host name="localhost" debug="0" appbase="/www/www.example.com/webapps" unpackwars="true" autodeploy="true">
            <logger classname="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true" /> 
        </host>
    </engine>
</service>
JKWorkersFile conf/workers.properties
JKLogFile/var/log/tomcat/mod_jk.log 日志级别信息

/etc/httpd/conf/workers.properties中的jkworkers文件基本上定义了套接字

 workers.tomcat_home=/var/tomcat4
 workers.java_home=/usr/java/jdk
 ps=/
 worker.list=worker1,worker2
 worker.worker1.port=8009
 worker.worker1.host=localhost
 worker.worker1.type=ajp13
 worker.worker2.port=8010
 worker.worker2.host=localhost
 worker.worker2.type=ajp13
httpd.conf的这段代码将把所有内容(即/*)委托给worker1:

<VirtualHost 192.0.34.72>
      ServerAdmin webmaster@ example.com
      DocumentRoot /www/www.example.com/webapps/ROOT
      ServerName www.example.com
      ErrorLog logs/public_errors
      LogLevel debug
      CustomLog logs/public_access combined
      JkMount /* worker1
      <Directory "/www/www. example.com/webapps/ROOT">
          Options Indexes FollowSymLinks Indexes
          AllowOverride None
          Order allow,deny
          Allow from all
     </Directory>
      <Location "/WEB-INF/">
          AllowOverride None
          deny from all
      </Location>
      <Location "/META-INF/">
          AllowOverride None
          deny from all
      </Location>
</VirtualHost>
<service name="public">
    <connector classname="org.apache.coyote.tomcat4.CoyoteConnector" port="8009" minprocessors="5" maxprocessors="75" enablelookups="true" redirectport="8443" acceptcount="10" debug="0" connectiontimeout="0" useurivalidationhack="false" protocolhandlerclassname="org.apache.jk.server.JkCoyoteHandler" /> 
    <engine name="Standalone" defaulthost="localhost" debug="0">
        <logger classname="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true" /> <realm classname="org.apache.catalina.realm.UserDatabaseRealm" debug="0" resourcename="UserDatabase" />  
        <host name="localhost" debug="0" appbase="/www/www.example.com/webapps" unpackwars="true" autodeploy="true">
            <logger classname="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true" /> 
        </host>
    </engine>
</service>

ServerAdmin网站管理员@example.com
DocumentRoot/www/www.example.com/webapps/ROOT
服务器名www.example.com
错误日志/公共\u错误
日志级调试
自定义日志/公共访问组合
JkMount/*worker1
选项索引后跟符号链接索引
不允许超限
命令允许,拒绝
通融
不允许超限
全盘否定
不允许超限
全盘否定
和Tomcat将提供此服务:

<VirtualHost 192.0.34.72>
      ServerAdmin webmaster@ example.com
      DocumentRoot /www/www.example.com/webapps/ROOT
      ServerName www.example.com
      ErrorLog logs/public_errors
      LogLevel debug
      CustomLog logs/public_access combined
      JkMount /* worker1
      <Directory "/www/www. example.com/webapps/ROOT">
          Options Indexes FollowSymLinks Indexes
          AllowOverride None
          Order allow,deny
          Allow from all
     </Directory>
      <Location "/WEB-INF/">
          AllowOverride None
          deny from all
      </Location>
      <Location "/META-INF/">
          AllowOverride None
          deny from all
      </Location>
</VirtualHost>
<service name="public">
    <connector classname="org.apache.coyote.tomcat4.CoyoteConnector" port="8009" minprocessors="5" maxprocessors="75" enablelookups="true" redirectport="8443" acceptcount="10" debug="0" connectiontimeout="0" useurivalidationhack="false" protocolhandlerclassname="org.apache.jk.server.JkCoyoteHandler" /> 
    <engine name="Standalone" defaulthost="localhost" debug="0">
        <logger classname="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true" /> <realm classname="org.apache.catalina.realm.UserDatabaseRealm" debug="0" resourcename="UserDatabase" />  
        <host name="localhost" debug="0" appbase="/www/www.example.com/webapps" unpackwars="true" autodeploy="true">
            <logger classname="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true" /> 
        </host>
    </engine>
</service>

 
以上示例摘自我的笔记,请查看更新文档,网址为:

Q:使用诸如mod_rewrite或mod_proxy之类的Apache模块是最简单的方法吗?答:是的:)这些链接可能有用:和