Search squid archive

RE: Reverse Proxy - order of cache_peer_access rules

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

 



I'm no pro at squid-cache, but I do run a handful of reverse proxies doing things similar to what you want. You might want to consider using url_regex? Maybe something along the lines of this:

http_port 80 accel defaultsite=www.example1.com vhost

cache_peer 10.0.0.3 parent 80 0 no-query originserver name=server3
cache_peer 10.0.0.1 parent 80 0 no-query originserver name=server1 
cache_peer 10.0.0.2 parent 80 0 no-query originserver name=server2

acl site3 url_regex -I ^http://www.example1.com/?a=1&o=16188 ^http://www.example1.com/?a=1&o=16188
acl site1 url_regex -I ^http://www.example1.com
acl site2 url_regex -I ^http://www.example2.com

cache_peer_access server3 allow site3
cache_peer_access server1 allow site1
cache_peer_access server2 allow site2
cache_peer_access server3 deny all
cache_peer_access server1 deny all
cache_peer_access server2 deny all

http_access allow site3
http_access allow site1
http_access allow site2

- Nick

-----Original Message-----
From: Oskar Stolc [mailto:oskar.stolc@xxxxxxxxx] 
Sent: Sunday, June 26, 2011 5:41 AM
To: squid-users@xxxxxxxxxxxxxxx
Subject:  Reverse Proxy - order of cache_peer_access rules

Hi,

I am trying to set up a Squid reverse proxy, but it does not want to work according my expectations.

I am serving two sites:
- www.example1.com
- www.example2.com

I have 3 backend servers:
- 10.0.0.1
- 10.0.0.2
- 10.0.0.3

I want Squid to send the
- www.example1.com queries to server 10.0.0.1
- www.example2.com queries to server 10.0.0.2
- if the query contains an o=16188 HTTP parameter I want Squid to send it to 10.0.0.3 regardless of domain

Example:
- http://www.example1.com/?a=1&b=2 - goes to 10.0.0.1
- http://www.example2.com/?a=1&b=2 - goes to 10.0.0.2
- http://www.example1.com/?a=1&o=16188 - goes to 10.0.0.3
- http://www.example2.com/?a=1&o=16188 - goes to 10.0.0.3

My configuration looks like this:

acl site1 dstdomain www.example1.com
acl site2 dstdomain www.example2.com

acl ocode_param urlpath_regex o=16188

http_access allow site1
http_access allow site2

http_port 80 accel defaultsite=www.example1.com vhost

cache_peer 10.0.0.1 parent 80 0 no-query originserver name=server1 cache_peer 10.0.0.2 parent 80 0 no-query originserver name=server2 cache_peer 10.0.0.3 parent 80 0 no-query originserver name=server3

cache_peer_access server3 allow ocode_param

cache_peer_access server1 allow site1
cache_peer_access server2 allow site2

cache_peer_access server1 deny all
cache_peer_access server2 deny all
cache_peer_access server3 deny all


The problem is that the queries with o=16188 don't go to 10.0.0.3, but are routed to 10.0.0.1 or 10.0.0.2 instead (based on domain). Does it mean the cache_peer_access rules are not "first match first win"
rules? Should I re-order them? How?

I've tried this on Squid 2.6 on CentOS5.6 and Squid 3.1 on Fedora15, both behave the same.

Please help, any suggestions appreciated.

Thanks,
Oskar



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

  Powered by Linux