Search squid archive

Re: Pass through some requests in a reversed-proxy setup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Rune Langseid wrote:
Hi there,

I'm trying to set up a reverse-proxy in front of an CMS.

Ok.

Since there are both anonymous users, and logged in users accessing this
system I only want to serve squid-cache to the anonymous users.

WHY? Surey yoru authenticated users are allowed to do the same things as anonymous (plus some extras only for them)

I was thinking of setting a cookie called "Authenticated" when the user
logs in as this is easy to check with "acl"

Like this:
acl cookie_is_set req_header Cookie ^.*Authenticated.*

However, I am facing a few problems then trying to let these user
through Squid.

I have tried this:
acl cookie_is_set req_header Cookie ^.*Authenticated.*
cache deny cookie_is_set

This setup works in a way, but Squid also deletes the cache-object used
by the anonymous users which is something I don't want. Could this be a bug?

Sort-of. Squid does not fully support HTTP/1.1 - this type of URL differences are part of the HTTP/1.1 support. If its still occuring when squid is apparently HTTP/1.1 compliant then it will be a bug.

I have also been experimenting with "always_direct" with no luck.
Like this:
always_direct allow cookie_is_set

I guess I am missing something important here...

always_direct bypasses the peer config you have for matching requests.


Is there another way to solve this?
Eg by using cache_peer and cache_peer_access?


Possibly. If you wanted one or other type of user not to be able to request new content from the peer.

What I suspect is that you actually want to use:
 miss_access deny !cookie_is_set

That way authenticated users are allowed to pull new objects int the cache. and non-authenticated are only allowed to use those already pulled in by somebody else.

Your CMS should be setting Expires: and Cache-Control: headers properly to control which items are storable in the cache and which need to be refreshed.


I'm using Squid 2.6.5, and my squid.conf looks like this:
--
cache_peer localhost parent 80 0 originserver
http_port 8080 vhost

acl cookie_is_set req_header Cookie ^.*Authenticated.*
cache deny cookie_is_set

#always_direct allow cookie_is_set

acl all src 0.0.0.0/0.0.0.0
http_access allow all

So by that config I read that you want ANYBODY to be able to access any website through your proxy at port 8080?

I'd use:
- cache_peer_domain or cache_peer_access to limit the possible destinations to those your peer provides.
- never_direct to prevent requests the CMS is not meant to provide

Also cookie's can be forged or spoofed easily. If you can try to setup some proper authentication. The auth_param programs can be an easily hand-coded script to test USER/PASS against anything you want. That also allows the users use their familiar browser login controls for your site.

Amos


[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux