.TH HAPROXY 1 "17 August 2007" 

.SH NAME

HAProxy \- fast and reliable http reverse proxy and load balancer

.SH SYNOPSIS

haproxy \-f <configuration\ file> [\-n\ maxconn] [\-N\ maxconn] [\-d] [\-D] [\-q] [\-V] [\-c] [\-p\ <pidfile>] [\-s] [\-l] [\-dk] [\-ds] [\-de] [\-dp] [\-db] [\-m\ <megs>] [{\-sf|\-st}\ pidlist...] 

.SH DESCRIPTION

HAProxy is a TCP/HTTP reverse proxy which is particularly suited for
high availability environments. Indeed, it can:
 \- route HTTP requests depending on statically assigned cookies ;
 \- spread the load among several servers while assuring server
   persistence through the use of HTTP cookies ;
 \- switch to backup servers in the event a main one fails ;
 \- accept connections to special ports dedicated to service
   monitoring ;
 \- stop accepting connections without breaking existing ones ;
 \- add/modify/delete HTTP headers both ways ;
 \- block requests matching a particular pattern ;
 \- hold clients to the right application server depending on
   application cookies
 \- report detailed status as HTML pages to authenticated users from an
   URI intercepted from the application.

It needs very little resource. Its event-driven architecture allows it
to easily handle thousands of simultaneous connections on hundreds of
instances without risking the system's stability.

.SH OPTIONS

.TP
\fB\-f <configuration file>\fP
Specify configuration file path.

.TP
\fB\-n <maxconn>\fP
Set the high limit for the total number of simultaneous connections.

.TP
\fB\-N <maxconn>\fP
Set the high limit for the per-listener number of simultaneous connections.

.TP
\fB\-d\fP
Start in foregreound with debugging mode enabled.
When the proxy runs in this mode, it dumps every connections,
disconnections, timestamps, and HTTP headers to stdout. This should
NEVER be used in an init script since it will prevent the system from
starting up.

.TP
\fB\-D\fP
Start in daemon mode.

.TP
\fB\-Ds\fP
Start in systemd daemon mode, keeping a process in foreground.

.TP
\fB\-q\fP
Disable messages on output.

.TP
\fB\-V\fP
Displays messages on output even when \-q or 'quiet' are specified. Some
information about pollers and config file are displayed during startup.

.TP
\fB\-c\fP
Only checks config file and exits with code 0 if no error was found, or
exits with code 1 if a syntax error was found.

.TP
\fB\-p <pidfile>\fP
Ask the process to write down each of its children's pids to this file
in daemon mode.

.TP
\fB\-s\fP
Show statistics (only if compiled in).
Statistics are only available if compiled in with the 'STATTIME' option.
It's only used during code optimization phases, and will soon disappear.

.TP
\fB\-l\fP
Show even more statistics (implies '\-s').

.TP
\fB\-dk\fP
Disable use of kqueue(). kqueue() is available only on BSD systems.

.TP
\fB\-ds\fP
Disable use of speculative epoll(). epoll() is available only on Linux 2.6
and some custom Linux 2.4 systems.

.TP
\fB\-de\fP
Disable use of epoll(). epoll() is available only on Linux 2.6
and some custom Linux 2.4 systems.

.TP
\fB\-dp\fP
Disables use of poll(). select() might be used instead.

.TP
\fB\-db\fP
Disables background mode (stays in foreground, useful for debugging).
For debugging, the '\-db' option is very useful as it temporarily
disables daemon mode and multi-process mode. The service can then be
stopped by simply pressing Ctrl-C, without having to edit the config nor
run full debug.

.TP
\fB\-m <megs>\fP
Enforce a memory usage limit to a maximum of <megs> megabytes.

.TP
\fB\-sf <pidlist>\fP
Send FINISH signal to the pids in pidlist after startup. The processes
which receive this signal will wait for all sessions to finish before
exiting. This option must be specified last, followed by any number of
PIDs. Technically speaking, \fBSIGTTOU\fP and \fBSIGUSR1\fP are sent.

.TP
\fB\-st <pidlist>\fP
Send TERMINATE signal to the pids in pidlist after startup. The processes
which receive this signal will wait immediately terminate, closing all
active sessions. This option must be specified last, followed by any number
of PIDs. Technically speaking, \fBSIGTTOU\fP and \fBSIGTERM\fP are sent.

.SH LOGGING
Since HAProxy can run inside a chroot, it cannot reliably access /dev/log.
For this reason, it uses the UDP protocol to send its logs to the server,
even if it is the local server. People who experience trouble receiving
logs should ensure that their syslog daemon listens to the UDP socket.
Several Linux distributions which ship with syslogd from the sysklogd
package have UDP disabled by default. The \fB\-r\fP option must be passed
to the daemon in order to enable UDP.

.SH SIGNALS
Some signals have a special meaning for the haproxy daemon. Generally, they are used between daemons and need not be used by the administrator.
.TP
\- \fBSIGUSR1\fP
Tells the daemon to stop all proxies and exit once all sessions are closed. It is often referred to as the "soft-stop" signal.
.TP
\- \fBSIGTTOU\fP
Tells the daemon to stop listening to all sockets. Used internally by \fB\-sf\fP and \fB\-st\fP.
.TP
\- \fBSIGTTIN\fP
Tells the daemon to restart listening to all sockets after a \fBSIGTTOU\fP. Used internally when there was a problem during hot reconfiguration.
.TP
\- \fBSIGINT\fP and \fBSIGTERM\fP
Both signals can be used to quickly stop the daemon.
.TP
\- \fBSIGHUP\fP
Dumps the status of all proxies and servers into the logs. Mostly used for trouble-shooting purposes.
.TP
\- \fBSIGQUIT\fP
Dumps information about memory pools into the logs. Mostly used for debugging purposes.
.TP
\- \fBSIGPIPE\fP
This signal is intercepted and ignored on systems without \fBMSG_NOSIGNAL\fP.

.SH SEE ALSO

A much better documentation can be found in haproxy-en.txt. On debian
systems, you can find this file in
/usr/share/doc/haproxy/haproxy-en.txt.gz.

.SH AUTHOR

HAProxy was written by Willy Tarreau. This man page was written by Arnaud Cornet and Willy Tarreau.

