mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-06 23:27:04 +02:00
[DOC] provided an example of configuration involving URL switching.
This commit is contained in:
parent
1c47f85292
commit
6bbf14c154
@ -62,7 +62,7 @@ fi
|
|||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%doc CHANGELOG TODO examples doc/haproxy-en.txt doc/haproxy-fr.txt doc/architecture.txt
|
%doc CHANGELOG TODO examples doc/haproxy-en.txt doc/haproxy-fr.txt doc/architecture.txt examples/url-switching.cfg
|
||||||
%attr(0755,root,root) %{_sbindir}/%{name}
|
%attr(0755,root,root) %{_sbindir}/%{name}
|
||||||
%dir %{_sysconfdir}/%{name}
|
%dir %{_sysconfdir}/%{name}
|
||||||
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/%{name}/%{name}.cfg
|
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/%{name}/%{name}.cfg
|
||||||
|
@ -64,7 +64,7 @@ fi
|
|||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%doc CHANGELOG TODO examples doc/haproxy-en.txt doc/haproxy-fr.txt doc/architecture.txt
|
%doc CHANGELOG TODO examples doc/haproxy-en.txt doc/haproxy-fr.txt doc/architecture.txt examples/url-switching.cfg
|
||||||
%attr(0755,root,root) %{_sbindir}/%{name}
|
%attr(0755,root,root) %{_sbindir}/%{name}
|
||||||
%dir %{_sysconfdir}/%{name}
|
%dir %{_sysconfdir}/%{name}
|
||||||
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/%{name}/%{name}.cfg
|
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/%{name}/%{name}.cfg
|
||||||
|
120
examples/url-switching.cfg
Normal file
120
examples/url-switching.cfg
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
#
|
||||||
|
# This configuration can be used as an example of how URL-switching may be
|
||||||
|
# implemented with current haproxy versions.
|
||||||
|
#
|
||||||
|
# Right now (version 1.2), haproxy can only select a server based on the cookie
|
||||||
|
# provided by the client. While this may sound limitated, it is yet possible to
|
||||||
|
# combine this feature to rewrites to provide full URL-switching capabilities.
|
||||||
|
#
|
||||||
|
# For this, we have to chain 3 levels :
|
||||||
|
# - front-end : will match the expected URIs and assign a cookie accordingly ;
|
||||||
|
# it uses regexps and could match on anything else (Host:,
|
||||||
|
# cookies, ...)
|
||||||
|
# - switch : will select a back-end depending on the cookie above
|
||||||
|
# - back-ends : will perform the load balancing between multiple servers for
|
||||||
|
# the same group. Note that this level can be omitted if there
|
||||||
|
# is only one server for each backend.
|
||||||
|
#
|
||||||
|
# Logging is performed at the lower level (back-ends) so that local server
|
||||||
|
# problems can be identified quickly with the timers. The client's IP is
|
||||||
|
# propagated in the X-Forwarded-For: header.
|
||||||
|
#
|
||||||
|
|
||||||
|
global
|
||||||
|
daemon
|
||||||
|
maxconn 6000 # warning: this has to be 3 times the expected value!
|
||||||
|
log 192.168.0.1 local0
|
||||||
|
|
||||||
|
defaults
|
||||||
|
mode http
|
||||||
|
balance roundrobin
|
||||||
|
option dontlognull
|
||||||
|
option httpclose
|
||||||
|
retries 1
|
||||||
|
redispatch
|
||||||
|
maxconn 2000
|
||||||
|
contimeout 5000
|
||||||
|
clitimeout 50000
|
||||||
|
srvtimeout 50000
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is the instance the client connects to.
|
||||||
|
#
|
||||||
|
listen frontend 10.20.30.40:80
|
||||||
|
option forwardfor # add 'X-Forwarded-For: IP'
|
||||||
|
|
||||||
|
# remove an eventual 'backend' cookie the client might have sent
|
||||||
|
reqidel ^Cookie:\ backend=
|
||||||
|
|
||||||
|
# add cookie 'backend=2' for any HTTP method followed by
|
||||||
|
# '/img' only or '/img/' followed by anything.
|
||||||
|
reqirep ^[^:\ ]*\ /img[/\ ].* \0\nCookie:\ backend=2
|
||||||
|
|
||||||
|
# add cookie 'backend=3' for any HTTP method followed by
|
||||||
|
# '/home' only or '/home/' followed by anything.
|
||||||
|
reqirep ^[^:\ ]*\ /home[/\ ].* \0\nCookie:\ backend=3
|
||||||
|
|
||||||
|
# send everything to next stage
|
||||||
|
server switch 127.0.0.2:8000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# This instance is only seen by the 'frontend' instance above. It receives all
|
||||||
|
# of its traffic.
|
||||||
|
#
|
||||||
|
listen switch 127.0.0.2:8000
|
||||||
|
# cookie name 'backend' inserted by the 'frontend' instance above
|
||||||
|
cookie backend
|
||||||
|
|
||||||
|
# default server 'backend1' gets the default traffic.
|
||||||
|
server backend1 127.0.0.3:8001
|
||||||
|
|
||||||
|
# those servers get traffic only if their cookie is present because
|
||||||
|
# they are tagged 'backup'.
|
||||||
|
server backend2 127.0.0.3:8002 cookie 2 backup
|
||||||
|
server backend3 127.0.0.3:8003 cookie 3 backup
|
||||||
|
|
||||||
|
#
|
||||||
|
# Backend 1 for dynamic contents.
|
||||||
|
# It is made of 4 apache servers which we can test thanks to a CGI script.
|
||||||
|
#
|
||||||
|
listen backend1 127.0.0.3:8001
|
||||||
|
log global
|
||||||
|
option httplog
|
||||||
|
capture request header X-Forwarded-For len 15
|
||||||
|
option httpchk /cgi-bin/testhost.pl
|
||||||
|
server apache1 192.168.1.1:80 maxconn 100 check inter 2000 fall 3
|
||||||
|
server apache2 192.168.1.2:80 maxconn 100 check inter 2000 fall 3
|
||||||
|
server apache3 192.168.1.3:80 maxconn 100 check inter 2000 fall 3
|
||||||
|
server apache4 192.168.1.4:80 maxconn 100 check inter 2000 fall 3
|
||||||
|
|
||||||
|
#
|
||||||
|
# backend 2 for images (/img).
|
||||||
|
# It is made of 3 Tux servers which we test by requesting the /img/logo.png
|
||||||
|
# file which should be present when file-systems are mounted.
|
||||||
|
#
|
||||||
|
listen backend2 127.0.0.3:8002
|
||||||
|
log global
|
||||||
|
option httplog
|
||||||
|
capture request header X-Forwarded-For len 15
|
||||||
|
option httpchk /img/logo.png
|
||||||
|
server tux5 192.168.1.5:80 check inter 2000 fall 3
|
||||||
|
server tux6 192.168.1.6:80 check inter 2000 fall 3
|
||||||
|
server tux7 192.168.1.7:80 check inter 2000 fall 3
|
||||||
|
|
||||||
|
#
|
||||||
|
# backend 3 for home directories (/home). These are the same machines as for
|
||||||
|
# dynamic content, except that a different server is bound to another port.
|
||||||
|
# We test the service by checking that the file "/home/webmaster/started"
|
||||||
|
# exists.
|
||||||
|
#
|
||||||
|
listen backend3 127.0.0.3:8003
|
||||||
|
log global
|
||||||
|
option httplog
|
||||||
|
capture request header X-Forwarded-For len 15
|
||||||
|
option httpchk /home/webmaster/started
|
||||||
|
server light1 192.168.1.1:8080 check inter 2000 fall 3
|
||||||
|
server light2 192.168.1.2:8080 check inter 2000 fall 3
|
||||||
|
server light3 192.168.1.3:8080 check inter 2000 fall 3
|
||||||
|
server light4 192.168.1.4:8080 check inter 2000 fall 3
|
||||||
|
|
Loading…
Reference in New Issue
Block a user