我对代理和 ajp 模块有疑问。
我的机器上有一个 Apache Web 服务器和一个 Tomcat servlet 容器。
Tomcat 上正在运行我的 java web 应用程序。
在 Apache 上我有一些服务,我可以通过这种方式调用它们:
http://myhos/service1
http://myhos/service2
http://myhos/service3
我将配置一个 ajp 连接器,以便从 Apache 调用我的 tomcat web 应用程序。我将使用某种方法来http://myhost
调用 Tomcat web 应用程序。
因此,我以这种方式配置了我的 apache..并且我得到了我想要的:我可以使用http://myHost
Apache 来可视化 Tomcat webApp。
<VirtualHost *:80>
ProxyRequests off
ProxyPreserveHost On
ServerAlias myserveralias
ErrorLog logs/error.log
CustomLog logs/access.log common
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /server-status !
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/ stickysession=JSESSIONID nofailover=Off maxattempts=1
<Proxy balancer://mycluster>
BalancerMember ajp://myIp:8009 min=10 max=100 route=portale loadfactor=1
ProxySet lbmethod=bytraffic
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Order deny,allow
Allow from localhost
</Location>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
</VirtualHost>
但是,现在我无法使用 apache 服务:
如果我使用,http://myhos/service1
则会出现错误,因为 apache 尝试在我的 tomcatWebApp 上搜索 service1。
有办法解决吗?
答案1
您可以使用!
排除语法来防止 Apache 服务被代理到 Tomcat,就像您已经对server-status
和所做的那样balancer-manager
:
ProxyPass /service1 !
ProxyPass /service2 !
ProxyPass /service3 !