【问题标题】:Apache proxypass - show local file if existApache proxypass - 如果存在则显示本地文件
【发布时间】:2016-07-21 12:40:43
【问题描述】:

我使用 apache proxypass 将内容从其他服务器显示到我的基础服务器

我用这个代码

<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /var/www/html/2
ServerName 2.example.com
ProxyPass /tv http://t1.example.com/tv/
ProxyPassReverse /tv  http://t1.example.com/tv/
ErrorLog logs/errorlive_log
CustomLog logs/access_live common
</VirtualHost>

所以有没有办法首先检查 2.example.com (/var/www/html/2) 上是否存在文件,如果文件存在则从该服务器显示,如果文件不存在,则从 t1.example 请求和服务器.com/tv/

-我有第二个问题: 如果 server2 提供位于 server1 和服务器 2 上的视频正在观看 10 个用户 (10mbps),那么将从服务器 2 或服务器 1 获取 10mbps 的服务器,或者两个服务器将具有 10mbps 的负载

【问题讨论】:

    标签: apache .htaccess reverse-proxy http-proxy


    【解决方案1】:

    在 apache 文档中,您可以看到 Ordering ProxyPass 和 RewriteRule Directives

    在 ProxyPass 指令之前评估 RewriteRule 指令。

    所以,你可以添加一个重写规则来测试文件是否存在

    <VirtualHost *:80>
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/html/2
    ServerName 2.example.com
    
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .* - [L]
    
    ProxyPass /tv http://t1.example.com/tv/
    ProxyPassReverse /tv  http://t1.example.com/tv/
    ErrorLog logs/errorlive_log
    CustomLog logs/access_live common
    
    </VirtualHost>
    

    RewiteCond 测试 %{REQUEST_FILENAME} 是否为常规文件,然后 rewriteRule 重写该文件。可以是html、图片、php文件等...

    现在,您可以适应自己的需要了。

    编辑 第二个问题,我忘了回答。对不起,我的错。

    根据 Apache mod_proxy 文档: “相反,反向代理(或网关)在客户端看来就像一个普通的 Web 服务器。客户端不需要特殊配置。客户端对反向代理命名空间中的内容进行普通请求。反向代理然后决定将这些请求发送到哪里并返回内容,就好像它本身就是源一样。”

    所以,两台服务器都已加载。

    【讨论】:

    • 第二个问题呢
    猜你喜欢
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    相关资源
    最近更新 更多