ProxyPass 和 DocumentRoot 在一个域上
Posted
技术标签:
【中文标题】ProxyPass 和 DocumentRoot 在一个域上【英文标题】:ProxyPass and DocumentRoot on one domain 【发布时间】:2013-04-19 21:38:16 【问题描述】:假设我有以下配置:
<VirtualHost domain.com>
# Server names, admins, logs etc...
ProxyVia On
ProxyRequests Off
<Location "/">
ProxyPass http://localhost:8080/tomcat-webapp/
ProxyPassReverse http://localhost:8080/tomcat-webapp/
Order allow,deny
Allow from all
</Location>
</VirtualHost>
现在,我希望地址 domain.com/forum
显示我的 MyBB 论坛的内容,该论坛的文件位于 /var/www/forum
目录中。如何做到这一点?
【问题讨论】:
【参考方案1】:其实我用下面的代码解决了这个问题:
ProxyPass /forum !
ProxyPass / http://localhost:8080/tomcat-webapp/
ProxyPassReverse / http://localhost:8080/tomcat-webapp/
Alias /forum /var/www/forum
【讨论】:
对这个问题有任何想法吗?谢谢! ***.com/questions/31271434/… @fracz 你能在这里发布整个 .conf 文件吗? 某种作品,但似乎权限错误与使用Directory
?【参考方案2】:
建议使用 mod_rewrite 来执行 ProxyPass 而不是 ProxyPass/ProxyPassReverse 命令。
尝试类似:
RewriteRule ^/forum - [L]
RewriteRule ^/(.*) http://localhost:8080/tomcat-webapp/$1 [P,L]
ProxyPassReverse / http://localhost:8080/tomcat-webapp/
【讨论】:
这需要在之前设置Alias /forum /var/www/forum
,以便重写规则可以去任何地方。【参考方案3】:
我用:
<VirtualHost *:80>
#other irrelevant configs here
ProxyPass /forum http://localhost:8080/myBB
ProxyPassReverse /forum http://localhost:8080/myBB
ProxyPass / http://localhost:8081/tomcat-app
ProxyPassReverse / http://localhost:8081/tomcat-app
</VirtualHost>
如果您的 tomcat 应用程序是根应用程序,则不必说“tomcat-app”。
【讨论】:
以上是关于ProxyPass 和 DocumentRoot 在一个域上的主要内容,如果未能解决你的问题,请参考以下文章
Apache 和 Tomcat:ProxyPass 和 ProxyPassReverse
将 httpd ProxyPass 与 DirectoryIndex 一起使用