On 29/11/2012 10:32 p.m., Steve Hill wrote:
On 29.11.12 04:16, Eliezer Croitoru wrote:
I was just wondering what exactly you need to do?
What is the goal\task of the ICAP server.
The ICAP server does on-the-fly content filtering - it analyses the
request headers (in reqmod), the response headers and streaming
content (in respmod) to categorise the page and decide whether to
block it. The filtering criteria are done on a per-user basis, so
filtering it before it enters the cache doesn't make sense, since in
the event that an allowed user requests the object, it will then go
into the cache and will be retrievable by a disallowed user.
Alternative that avoids post-cache alteration:
* REQMOD adds a custom header to the request containing a token to
uniquely identify the privilege level.
* REPMOD adds a Vary: header naming the REQMOD header as criteria for
variant caching.
That way REQMOD has full control over whether the request can HIT on the
URL resource, or HIT on a dummy error page created by REPMOD, or MISS
completely (new unique token) and cause a different copy of the object
to be fetched.
If you face the issue that the REQMOD is not able to determine on its
own whether the request should HIT or MISS then you can assign it a
unique token that will MISS anything already cached, and let REPMOD take
control over what that token points at.
It would, however, be nice to be able to ditch the second squid at
some point. Although a secondary purpose the second squid is
performing at the moment is to prevent tproxy from spoofing the
client's IP address, since there appears to be no other way to do this
(?). That said, disabling spoofing on a global basis appears to be
reasonably trivial to hack into the squid code.
Was it you that mentioned elsewhere you were trying to avoid TPROXY
because you had internal web servers? cache_peer can point directly at
the internal servers to avoid having an extra proxy hop. The cache_peer
no-tproxy option was added for exactly this scenario. TPROXY spoofing is
only mandatory on DIRECT traffic at present.
Amos