Apache-2.4

Apache 反向代理 - 帶有 Cookie 的 HTTP 請求

  • April 22, 2021

我們有一個執行良好的 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/

您可以檢查標頭中是否存在LtpaToken=字元串,Cookie如果找不到,則提供“/forbidden.html”頁面。

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

如果要返回 HTTP 錯誤(403),可以將最後一行替換為

RewriteRule ".*" - [F]

引用自:https://serverfault.com/questions/1061200