【问题标题】:Exclude an alias from virtualhost proxypass从虚拟主机 proxypass 中排除别名
【发布时间】:2015-01-07 01:27:07
【问题描述】:

我正在关注虚拟主机配置。期望的结果是:

  1. 如果有人请求http://test.myserver.com/myapp,apache 服务 他来自 /var/www/myapp
  2. 如果http://test.myserver.com/ 是 请求后,apache 将其重定向到端口 8069。

第 2 次有效,但第 1 次无效。有人可以帮忙吗!

<VirtualHost *:80>
        ServerName test.myserver.com

        Alias /myapp /var/www/myapp
        <Directory /var/www/myapp>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>

        ProxyPass / http://localhost:8069/
        ProxyPassReverse / http://localhost:8069/

</VirtualHost>

【问题讨论】:

    标签: linux apache ubuntu openerp virtualhost


    【解决方案1】:

    这就是我能够达到预期结果的方式。以下是ProxyPassMatch ^/myapp ! 发挥作用的工作配置,除了 (server-address)/myapp 之外,所有请求都被代理到在端口 8069 上运行的 open-erp 的另一台服务器:

    <VirtualHost *:80>
            ServerName test.myserver.com
    
            Alias /myapp /var/www/myapp
            <Directory /var/www/myapp>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride None
                    Order allow,deny
                    Allow from all
            </Directory>
    
            ProxyPassMatch ^/myapp !
            ProxyPass / http://localhost:8069/
            ProxyPassReverse / http://localhost:8069/
    
    
      CustomLog /var/log/apache2/access.log common
      ErrorLog /var/log/apache2/error.log
    
    </VirtualHost>
    

    【讨论】:

    • 结合let's encrypt使用反向代理的虚拟主机验证非常有用,但仍想使用自动验证,例如。 G。别名 /.well-known "C:/apache24/htdocs/.well-known" ...
    • @AndiB 问题是 不能使用 ProxyPass。只有 并且不适用于 Alias。正在寻找解决方案……
    • 这里有一个更全面的配置建议:github.com/certbot/certbot/issues/2164——关键是使用ProxyPass /path /url,而不是像我以前那样使用&lt;Location /path&gt; ProxyPass /url。现在它对我有用。
    • @ygoe 今天你是我的英雄。
    【解决方案2】:

    您可以简单地在定义 / 之前添加另一个 ProxyPass 指令,而不是使用:ProxyPassMatch ^/myapp !,如下所示:

    ProxyPass /myapp !
    ProxyPass / http://localhost:8069/
    

    由于 ProxyPass 尊重优先级(将处理第一个匹配项),它将正确重定向到目录而不是代理。

    【讨论】:

    • 确保http://localhost:8069/ 服务器在应用程序中没有任何名为/myapp 的路由。就我而言,它显示404
    • 嗨,这会让最终的 url 看起来像 xyz.com/myapp
    【解决方案3】:

    如果您有 RewriteCond(很可能在您运行代理时),这也会让您开心!

    <Location /.well-known/acme-challenge/>
      RewriteEngine off
      ProxyPass !
    </Location>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 2012-10-04
      • 2015-06-17
      • 2022-06-14
      • 2021-03-22
      相关资源
      最近更新 更多