我们有一个运行良好的 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]