Re: relayd http-https-redirects with sticky-address

2008-09-18 Thread Mikael Jansson
Thanks for your replies!  I agree that this should be solved in the web-app,
but in the meantime I'll try reyks workaround.

Regards, Mikael

2008/9/17 Michiel van Baak [EMAIL PROTECTED]:
 On 21:39, Wed 17 Sep 08, Reyk Floeter wrote:
 Hi!

 On Wed, Sep 17, 2008 at 05:45:23PM +0200, Mikael Jansson wrote:
  I use relayd with redirects to loadbalance between two webservers
  one redirect is used for http requests and the other for https.
  the redirects looks like the following:
 
  redirect web_http {
listen on $ext_ip1 port http
sticky-address
forward to webservers port http check script /usr/local/sbin/chksrvs
  }
 
  redirect web_https {
listen on $ext_ip1 port https
sticky-address
forward to webservers port https check script /usr/local/sbin/chksrvs
  }
 
  The redirects works fine separately and sticks to the same machine,
  but when the user navigates from http to https the requests sometimes
  move over to the other machine.  I need the same source-ip to always
  stay on the same server regardless of which destination port (http or 
  https)
  is being used.  Any suggestions on how to achive this would be greatly
  appreciated.
 

 it does not work without a patch.  the problem is that the pf Source
 Tracking table includes a reference to the rule but your example above
 will load two different rules into pf - one matching http and another
 one matching https.

 the trick is to combine both statements into one rule.  we don't
 support port tables in pf yet (which whould be very helpful in many
 cases) but there is support for a port range.  so the hack is to
 allow port ranges in the relayd redirection block

 redirect web {
   listen on $ext_ip1 port 80:443
   sticky-address
   forward to webservers port http check script 
 /usr/local/sbin/chksrvs
 }

 note that this will match any traffic in the 80 - 443 port range, make
 sure that you add additional pf rules to filter any other ports except
 80 and 443.  but it works with Source Tracking and should allow your
 clients to move between http and https on the same server.  another
 limitation is that it only runs checks on one of the ports.

 ugh, this looks ugly ;)
 Instead of going this route I would say: find the source of why the
 visitor should access the same host, and solve that.

 We use relayd in front of 6 servers, doing http and https.
 It doesn't matter what backend box the user go. Hell, they can even go
 to another box on a reload.
 This of course means we are storing sessions etc on shared storage (NFS
 in our case, and the new sharedance port looks like an alternative for
 that)

 --

 Michiel van Baak
 [EMAIL PROTECTED]
 http://michiel.vanbaak.eu
 GnuPG key: http://pgp.mit.edu:11371/pks/lookup?op=getsearch=0x71C946BD

 Why is it drug addicts and computer aficionados are both called users?



relayd http-https-redirects with sticky-address

2008-09-17 Thread Mikael Jansson
Hello,

I use relayd with redirects to loadbalance between two webservers
one redirect is used for http requests and the other for https.
the redirects looks like the following:

redirect web_http {
  listen on $ext_ip1 port http
  sticky-address
  forward to webservers port http check script /usr/local/sbin/chksrvs
}

redirect web_https {
  listen on $ext_ip1 port https
  sticky-address
  forward to webservers port https check script /usr/local/sbin/chksrvs
}

The redirects works fine separately and sticks to the same machine,
but when the user navigates from http to https the requests sometimes
move over to the other machine.  I need the same source-ip to always
stay on the same server regardless of which destination port (http or https)
is being used.  Any suggestions on how to achive this would be greatly
appreciated.

Regards, Mikael