如何在apache子域后面屏蔽tomcat应用程序?
我有两个独立的服务器:一个Apache公共服务器和一个内部Tomcat服务器。我希望我们的用户能够使用我们的Tomcat应用程序,而无需通过公共Apache服务器公开我们的实现细节(实际端口、服务器名称、上下文),如下所示:如何在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应用程序的请求?使用诸如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.propertiesJKLogFile/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模块是最简单的方法吗?答:是的:)这些链接可能有用:和