Apache 反向代理 - 带有 Cookie 的 HTTP 请求

Apache 反向代理 - 带有 Cookie 的 HTTP 请求

我们有一个运行良好的 Apache 反向代理(配置如下)。现在我们需要将一些请求转发到另一台服务器(server3.domain.com),并检查用户请求中是否存在名为“LtpaToken”的 cookie。如果不存在该 cookie,则会返回错误页面(我们希望阻止匿名请求)。

我需要将 http(s)://server.domain.com/jsreports/* 转发到 JSReport 的 http(s) 服务器 VM(server3.domain.com IP 地址)并检查 LtpaToken 是否存在。

有人能给出一些如何实现的提示吗?谢谢!

        SSLEngine on
        SSLProxyEngine On
        SSLProxyVerify none
        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerName off

ServerName server.domain.com
        ServerAlias server.com
        ProxyRequests Off
#   ProxyPreserveHost On
    
<Proxy balancer://my_cluster>
    BalancerMember https://server.domain.com keepalive=on
    BalancerMember https://server2.domain.com keepalive=on  status=+H
    AllowOverride None
    Order allow,deny
    allow from all
    
#   ProxySet lbmethod=byrequests
</Proxy>

 <Location /balancer-manager>
        SetHandler balancer-manager
        Order deny,allow
    Deny from all
        allow from 192.168.1
    allow from 5.5.20
    allow from 10.0.0
</Location>

    ProxyPass /balancer-manager !   
    ProxyPass / balancer://my_cluster/
    ProxyPassReverse / balancer://my_cluster/

答案1

LtpaToken=您可以检查标题中是否存在该字符串Cookie,如果未找到,则提供“/forbidden.html”页面。

RewriteEngine On
RewriteCond "%{HTTP:Cookie}" "!LtpaToken=" [NC]
RewriteRule ".*" "/forbidden.html" [R,P]

如果你想返回 HTTP 错误(403),你可以将最后一行替换为

RewriteRule ".*" - [F]

相关内容