描述
>在8080上侦听webapps的内部Tomcat服务器:
的 “http://内部:8080 /富Web网页/”
“HTTP://内部:8080 /富-网站/”
>面向外部的Apache服务器代理子域的请求:
“http://foo.domain.com/”
>子域根的任何请求都将代理到Tomcat上的foo-website webapp.
>任何其他请求都将代理到相应的路径/ webapp
用例A.
>要求:
“http://foo.domain.com/index.html”
>代理:
“HTTP://内部:8080 /富-网站/ index.html的”
用例B
>要求:
“http://foo.domain.com/webservice/listener.html?param1=foo\u0026amp;param2=bar”
>代理:
的 “http://内部:8080 /富Web网页/ listener.html参数1 = FOO&安培; param2的=栏”
VirtualHost定义
>满足用例B的当前虚拟主机定义:
<VirtualHost *:80>
ServerName foo.domain.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ErrorLog /var/log/apache2/foo_error.log
LogLevel warn
CustomLog /var/log/apache2/foo_access.log combined
# RewriteRules
# ?
# ProxyPass
ProxyPreserveHost On
ProxyPass / http://internal:8080/
ProxyPassReverse / http://internal:8080/
</VirtualHost>
尝试1
# RewriteRules
RewriteEngine On
RewriteRule ^/(.*) http://internal:8080/foo-website/$1 [P]
>使用案例A表示满意
>用例B失败
尝试2
# RewriteRules
RewriteEngine On
RewriteRule ^/$http://internal:8080/foo-website/$1 [P]
>使用案例B满意
>用例A不完全满意
> foo-website中的index.html已加载,但js,img或css文件夹中没有任何文件.
最佳答案 ProxyPass规则按顺序匹配
ProxyPass /webservice/ http://internal:8080/foo-webservice/
ProxyPassReverse /webservice/ http://internal:8080/foo-webservice/
ProxyPass /website/ http://internal:8080/foo-website/
ProxyPassReverse /website/ http://internal:8080/foo-website/
ProxyPass / http://internal:8080/foo-website/
ProxyPassReverse / http://internal:8080/foo-website/
没有重写规则.那还不够好吗?