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=get&search=0x71C946BD
>
> "Why is it drug addicts and computer aficionados are both called users?"

Reply via email to