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 一起使用

用于 Keycloak 管理控制台重定向的 ProxyPass

使用多个 ProxyPass 配置 Apache

ProxyPass、Proxy Reverse 或 AJP

具有多个位置的 nginx proxypass