<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>HAProxy 3.4.3 Documentation on PGSQL.CC</title>
    <link>https://pgsql.cc/haproxy/</link>
    <description>Recent content in HAProxy 3.4.3 Documentation on PGSQL.CC</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Sat, 22 Aug 2026 07:33:30 +0800</lastBuildDate>
    
    
      <atom:link href="https://pgsql.cc/haproxy/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Starter Guide</title>
        <link></link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid></guid>
        <description></description>
      </item>
    <item>
        <title>Load Balancing Fundamentals</title>
        <link>https://pgsql.cc/haproxy/load-balancing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/load-balancing/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;This document is an introduction to HAProxy for all those who don&amp;rsquo;t know it, as well as for those&#xA;who want to re-discover it when they know older versions. Its primary focus is to provide users with&#xA;all the elements to decide if HAProxy is the product they&amp;rsquo;re looking for or not. Advanced users may&#xA;find here some parts of solutions to some ideas they had just because they were not aware of a given&#xA;new feature. Some sizing information is also provided, the product&amp;rsquo;s lifecycle is explained, and&#xA;comparisons with partially overlapping products are provided.&lt;/p&gt;</description>
      </item>
    <item>
        <title>What HAProxy Is and How It Works</title>
        <link>https://pgsql.cc/haproxy/architecture/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/architecture/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is written as &amp;ldquo;HAProxy&amp;rdquo; to designate the product, and as &amp;ldquo;haproxy&amp;rdquo; to designate the&#xA;executable program, software package or a process. However, both are commonly used for both&#xA;purposes, and are pronounced H-A-Proxy. Very early, &amp;ldquo;haproxy&amp;rdquo; used to stand for &amp;ldquo;high availability&#xA;proxy&amp;rdquo; and the name was written in two separate words, though by now it means nothing else than&#xA;&amp;ldquo;HAProxy&amp;rdquo;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Basic Features</title>
        <link>https://pgsql.cc/haproxy/basic-features/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/basic-features/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;This section will enumerate a number of features that HAProxy implements, some of which are&#xA;generally expected from any modern load balancer, and some of which are a direct benefit of&#xA;HAProxy&amp;rsquo;s architecture. More advanced features will be detailed in the next section.&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-3-3-1&#34;&gt;3.3.1. Basic features : Proxying&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Proxying is the action of transferring data between a client and a server over two independent&#xA;connections. The following basic features are supported by HAProxy regarding proxying and connection&#xA;management:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Standard Features</title>
        <link>https://pgsql.cc/haproxy/standard-features/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/standard-features/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;In this section, some features that are very commonly used in HAProxy but are not necessarily&#xA;present on other load balancers are enumerated.&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-3-4-1&#34;&gt;3.4.1. Standard features : Sampling and converting information&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;HAProxy supports information sampling using a wide set of &amp;ldquo;sample fetch functions&amp;rdquo;. The principle is&#xA;to extract pieces of information known as samples, for immediate use. This is used for stickiness,&#xA;to build conditions, to produce information in logs or to enrich HTTP headers.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Advanced Features</title>
        <link>https://pgsql.cc/haproxy/advanced-features/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/advanced-features/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;h2 id=&#34;section-3-5-1&#34;&gt;3.5.1. Advanced features : Management&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;HAProxy is designed to remain extremely stable and safe to manage in a regular production&#xA;environment. It is provided as a single executable file which doesn&amp;rsquo;t require any installation&#xA;process. Multiple versions can easily coexist, meaning that it&amp;rsquo;s possible (and recommended) to&#xA;upgrade instances progressively by order of importance instead of migrating all of them at once.&#xA;Configuration files are easily versioned. Configuration checking is done off-line so it doesn&amp;rsquo;t&#xA;require to restart a service that will possibly fail. During configuration checks, a number of&#xA;advanced mistakes may be detected (e.g. a rule hiding another one, or stickiness that will not work)&#xA;and detailed warnings and configuration hints are proposed to fix them. Backwards configuration file&#xA;compatibility goes very far away in time, with version 1.5 still fully supporting configurations for&#xA;versions 1.1 written 13 years before, and 1.6 only dropping support for almost unused, obsolete&#xA;keywords that can be done differently. The configuration and software upgrade mechanism is smooth&#xA;and non disruptive in that it allows old and new processes to coexist on the system, each handling&#xA;its own connections. System status, build options, and library compatibility are reported on&#xA;startup.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Sizing and Performance</title>
        <link>https://pgsql.cc/haproxy/sizing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/sizing/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Typical CPU usage figures show 15% of the processing time spent in HAProxy versus 85% in the kernel&#xA;in TCP or HTTP close mode, and about 30% for HAProxy versus 70% for the kernel in HTTP keep-alive&#xA;mode. This means that the operating system and its tuning have a strong impact on the global&#xA;performance.&lt;/p&gt;&#xA;&lt;p&gt;Usages vary a lot between users, some focus on bandwidth, other ones on request rate, others on&#xA;connection concurrency, others on SSL performance. This section aims at providing a few elements to&#xA;help with this task.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Releases, Packages, and Upgrades</title>
        <link>https://pgsql.cc/haproxy/releases-and-upgrades/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/releases-and-upgrades/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is an open source project covered by the GPLv2 license, meaning that everyone is allowed to&#xA;redistribute it provided that access to the sources is also provided upon request, especially if any&#xA;modifications were made.&lt;/p&gt;&#xA;&lt;p&gt;HAProxy evolves as a main development branch called &amp;ldquo;master&amp;rdquo; or &amp;ldquo;mainline&amp;rdquo;, from which new branches&#xA;are derived once the code is considered stable. A lot of web sites run some development branches in&#xA;production on a voluntarily basis, either to participate to the project or because they need a&#xA;bleeding edge feature, and their feedback is highly valuable to fix bugs and judge the overall&#xA;quality and stability of the version being developed.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Companion Products and Alternatives</title>
        <link>https://pgsql.cc/haproxy/ecosystem/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/ecosystem/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy integrates fairly well with certain products listed below, which is why they are mentioned&#xA;here even if not directly related to HAProxy.&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-4-1&#34;&gt;4.1. Apache HTTP server&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Apache is the de-facto standard HTTP server. It&amp;rsquo;s a very complete and modular project supporting&#xA;both file serving and dynamic contents. It can serve as a frontend for some application servers. It&#xA;can even proxy requests and cache responses. In all of these use cases, a front load balancer is&#xA;commonly needed. Apache can work in various modes, some being heavier than others. Certain modules&#xA;still require the heavier pre-forked model and will prevent Apache from scaling well with a high&#xA;number of connections. In this case HAProxy can provide a tremendous help by enforcing the&#xA;per-server connection limits to a safe value and will significantly speed up the server and preserve&#xA;its resources that will be better used by the application.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Documentation and Community</title>
        <link>https://pgsql.cc/haproxy/resources/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/resources/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;h2 id=&#34;section-1&#34;&gt;1. Available documentation&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The complete HAProxy documentation is contained in the following documents. Please ensure to consult&#xA;the relevant documentation to save time and to get the most accurate response to your needs. Also&#xA;please refrain from sending questions to the mailing list whose responses are present in these&#xA;documents.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pgsql.cc/haproxy/load-balancing/&#34;&gt;&lt;code&gt;intro.txt&lt;/code&gt;&lt;/a&gt; (this document): it presents the basics of load balancing, HAProxy as a product, what it&#xA;does, what it doesn&amp;rsquo;t do, some known traps to avoid, some OS-specific limitations, how to get it,&#xA;how it evolves, how to ensure you&amp;rsquo;re running with all known fixes, how to update it, complements&#xA;and alternatives.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Configuration Manual</title>
        <link></link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid></guid>
        <description></description>
      </item>
    <item>
        <title>1. Quick Reminder About HTTP</title>
        <link>https://pgsql.cc/haproxy/http-fundamentals/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/http-fundamentals/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;This document covers the configuration language as implemented in the version specified above. It&#xA;does not provide any hints, examples, or advice. For such documentation, please refer to the&#xA;Reference Manual or the Architecture Manual. The numbered chapters are ordered in the flat HAProxy sidebar for direct navigation.&lt;/p&gt;&#xA;&lt;p&gt;When HAProxy is running in HTTP mode, both the request and the response are fully analyzed and&#xA;indexed, thus it becomes possible to build matching criteria on almost anything found in the&#xA;contents.&lt;/p&gt;</description>
      </item>
    <item>
        <title>2. Configuring HAProxy</title>
        <link>https://pgsql.cc/haproxy/configuration-basics/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/configuration-basics/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;h2 id=&#34;section-2-1&#34;&gt;2.1. Configuration file format&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;HAProxy&amp;rsquo;s configuration process involves 3 major sources of parameters:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;the arguments from the command-line, which always take precedence&lt;/li&gt;&#xA;&lt;li&gt;the configuration file(s), whose format is described here&lt;/li&gt;&#xA;&lt;li&gt;the running process&amp;rsquo;s environment, in case some environment variables are explicitly referenced&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The configuration file follows a fairly simple hierarchical format which obey a few basic rules:&lt;/p&gt;</description>
      </item>
    <item>
        <title>3. Global Section</title>
        <link>https://pgsql.cc/haproxy/global/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/global/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Parameters in the &amp;ldquo;global&amp;rdquo; section are process-wide and often OS-specific. They are generally set&#xA;once for all and do not need being changed once correct. Some of them have command-line equivalents.&lt;/p&gt;&#xA;&lt;p&gt;The following keywords are supported in the &amp;ldquo;global&amp;rdquo; section:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Process management and security&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;51degrees-allow-unmatched&lt;/li&gt;&#xA;&lt;li&gt;51degrees-cache-size&lt;/li&gt;&#xA;&lt;li&gt;51degrees-data-file&lt;/li&gt;&#xA;&lt;li&gt;51degrees-difference&lt;/li&gt;&#xA;&lt;li&gt;51degrees-drift&lt;/li&gt;&#xA;&lt;li&gt;51degrees-property-name-list&lt;/li&gt;&#xA;&lt;li&gt;51degrees-property-separator&lt;/li&gt;&#xA;&lt;li&gt;51degrees-use-performance-graph&lt;/li&gt;&#xA;&lt;li&gt;51degrees-use-predictive-graph&lt;/li&gt;&#xA;&lt;li&gt;ca-base&lt;/li&gt;&#xA;&lt;li&gt;chroot&lt;/li&gt;&#xA;&lt;li&gt;cluster-secret&lt;/li&gt;&#xA;&lt;li&gt;cpu-affinity&lt;/li&gt;&#xA;&lt;li&gt;cpu-map&lt;/li&gt;&#xA;&lt;li&gt;cpu-policy&lt;/li&gt;&#xA;&lt;li&gt;cpu-set&lt;/li&gt;&#xA;&lt;li&gt;crt-base&lt;/li&gt;&#xA;&lt;li&gt;daemon&lt;/li&gt;&#xA;&lt;li&gt;default-path&lt;/li&gt;&#xA;&lt;li&gt;description&lt;/li&gt;&#xA;&lt;li&gt;deviceatlas-json-file&lt;/li&gt;&#xA;&lt;li&gt;deviceatlas-log-level&lt;/li&gt;&#xA;&lt;li&gt;deviceatlas-properties-cookie&lt;/li&gt;&#xA;&lt;li&gt;deviceatlas-separator&lt;/li&gt;&#xA;&lt;li&gt;dns-accept-family&lt;/li&gt;&#xA;&lt;li&gt;expose-deprecated-directives&lt;/li&gt;&#xA;&lt;li&gt;expose-experimental-directives&lt;/li&gt;&#xA;&lt;li&gt;external-check&lt;/li&gt;&#xA;&lt;li&gt;fd-hard-limit&lt;/li&gt;&#xA;&lt;li&gt;gid&lt;/li&gt;&#xA;&lt;li&gt;grace&lt;/li&gt;&#xA;&lt;li&gt;group&lt;/li&gt;&#xA;&lt;li&gt;h1-accept-payload-with-any-method&lt;/li&gt;&#xA;&lt;li&gt;h1-case-adjust&lt;/li&gt;&#xA;&lt;li&gt;h1-case-adjust-file&lt;/li&gt;&#xA;&lt;li&gt;h1-do-not-close-on-insecure-transfer-encoding&lt;/li&gt;&#xA;&lt;li&gt;h2-workaround-bogus-websocket-clients&lt;/li&gt;&#xA;&lt;li&gt;hard-stop-after&lt;/li&gt;&#xA;&lt;li&gt;harden.reject-privileged-ports.tcp&lt;/li&gt;&#xA;&lt;li&gt;harden.reject-privileged-ports.quic&lt;/li&gt;&#xA;&lt;li&gt;insecure-fork-wanted&lt;/li&gt;&#xA;&lt;li&gt;insecure-setuid-wanted&lt;/li&gt;&#xA;&lt;li&gt;issuers-chain-path&lt;/li&gt;&#xA;&lt;li&gt;jwt.decrypt_alg_list&lt;/li&gt;&#xA;&lt;li&gt;jwt.decrypt_enc_list&lt;/li&gt;&#xA;&lt;li&gt;key-base&lt;/li&gt;&#xA;&lt;li&gt;limited-quic&lt;/li&gt;&#xA;&lt;li&gt;localpeer&lt;/li&gt;&#xA;&lt;li&gt;log&lt;/li&gt;&#xA;&lt;li&gt;log-send-hostname&lt;/li&gt;&#xA;&lt;li&gt;log-tag&lt;/li&gt;&#xA;&lt;li&gt;lua-load&lt;/li&gt;&#xA;&lt;li&gt;lua-load-per-thread&lt;/li&gt;&#xA;&lt;li&gt;lua-prepend-path&lt;/li&gt;&#xA;&lt;li&gt;max-threads-per-group&lt;/li&gt;&#xA;&lt;li&gt;mworker-max-reloads&lt;/li&gt;&#xA;&lt;li&gt;nbthread&lt;/li&gt;&#xA;&lt;li&gt;node&lt;/li&gt;&#xA;&lt;li&gt;numa-cpu-mapping&lt;/li&gt;&#xA;&lt;li&gt;ocsp-update.disable&lt;/li&gt;&#xA;&lt;li&gt;ocsp-update.maxdelay&lt;/li&gt;&#xA;&lt;li&gt;ocsp-update.mindelay&lt;/li&gt;&#xA;&lt;li&gt;ocsp-update.httpproxy&lt;/li&gt;&#xA;&lt;li&gt;ocsp-update.mode&lt;/li&gt;&#xA;&lt;li&gt;pidfile&lt;/li&gt;&#xA;&lt;li&gt;pp2-never-send-local&lt;/li&gt;&#xA;&lt;li&gt;presetenv&lt;/li&gt;&#xA;&lt;li&gt;prealloc-fd&lt;/li&gt;&#xA;&lt;li&gt;resetenv&lt;/li&gt;&#xA;&lt;li&gt;set-dumpable&lt;/li&gt;&#xA;&lt;li&gt;set-var&lt;/li&gt;&#xA;&lt;li&gt;setenv&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-ciphers&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-ciphersuites&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-client-sigalgs&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-curves&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-options&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-sigalgs&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-ciphers&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-ciphersuites&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-client-sigalgs&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-curves&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-options&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-sigalgs&lt;/li&gt;&#xA;&lt;li&gt;ssl-dh-param-file&lt;/li&gt;&#xA;&lt;li&gt;ssl-propquery&lt;/li&gt;&#xA;&lt;li&gt;ssl-provider&lt;/li&gt;&#xA;&lt;li&gt;ssl-provider-path&lt;/li&gt;&#xA;&lt;li&gt;ssl-security-level&lt;/li&gt;&#xA;&lt;li&gt;ssl-server-verify&lt;/li&gt;&#xA;&lt;li&gt;ssl-skip-self-issued-ca&lt;/li&gt;&#xA;&lt;li&gt;stats&lt;/li&gt;&#xA;&lt;li&gt;stats-file&lt;/li&gt;&#xA;&lt;li&gt;strict-limits&lt;/li&gt;&#xA;&lt;li&gt;uid&lt;/li&gt;&#xA;&lt;li&gt;ulimit-n&lt;/li&gt;&#xA;&lt;li&gt;unix-bind&lt;/li&gt;&#xA;&lt;li&gt;unsetenv&lt;/li&gt;&#xA;&lt;li&gt;user&lt;/li&gt;&#xA;&lt;li&gt;wurfl-cache-size&lt;/li&gt;&#xA;&lt;li&gt;wurfl-data-file&lt;/li&gt;&#xA;&lt;li&gt;wurfl-information-list&lt;/li&gt;&#xA;&lt;li&gt;wurfl-information-list-separator&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Performance tuning&lt;/p&gt;</description>
      </item>
    <item>
        <title>4. Proxies</title>
        <link>https://pgsql.cc/haproxy/proxies/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/proxies/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Proxy configuration can be located in a set of sections:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;defaults [&lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt;] [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#xA;&lt;li&gt;frontend &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#xA;&lt;li&gt;backend &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#xA;&lt;li&gt;listen &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A &amp;ldquo;frontend&amp;rdquo; section describes a set of listening sockets accepting client connections.&lt;/p&gt;&#xA;&lt;p&gt;A &amp;ldquo;backend&amp;rdquo; section describes a set of servers to which the proxy will connect to forward incoming&#xA;connections.&lt;/p&gt;</description>
      </item>
    <item>
        <title>5. Bind and Server Options</title>
        <link>https://pgsql.cc/haproxy/bind-and-server-options/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/bind-and-server-options/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;The &amp;ldquo;bind&amp;rdquo;, &amp;ldquo;server&amp;rdquo; and &amp;ldquo;default-server&amp;rdquo; keywords support a number of settings depending on some&#xA;build options and on the system HAProxy was built on. These settings generally each consist in one&#xA;word sometimes followed by a value, written on the same line as the &amp;ldquo;bind&amp;rdquo; or &amp;ldquo;server&amp;rdquo; line. All&#xA;these options are described in this section.&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-5-1&#34;&gt;5.1. Bind options&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The &amp;ldquo;bind&amp;rdquo; keyword supports a certain number of settings which are all passed as arguments on the&#xA;same line. The order in which those arguments appear makes no importance, provided that they appear&#xA;after the bind address. All of these parameters are optional. Some of them consist in a single words&#xA;(booleans), while other ones expect a value after them. In this case, the value must be provided&#xA;immediately after the setting name.&lt;/p&gt;</description>
      </item>
    <item>
        <title>6. Cache</title>
        <link>https://pgsql.cc/haproxy/cache/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/cache/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy provides a cache, which was designed to perform cache on small objects (favicon, css&amp;hellip;).&#xA;This is a minimalist low-maintenance cache which runs in RAM.&lt;/p&gt;&#xA;&lt;p&gt;The cache is based on a memory area shared between all threads, and split in 1kB blocks.&lt;/p&gt;&#xA;&lt;p&gt;If an object is not used anymore, it can be deleted to store a new object independently of its&#xA;expiration date. The oldest objects are deleted first when we try to allocate a new one.&lt;/p&gt;</description>
      </item>
    <item>
        <title>7. ACLs and Sample Fetching</title>
        <link>https://pgsql.cc/haproxy/acls-and-samples/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/acls-and-samples/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is capable of extracting data from request or response streams, from client or server&#xA;information, from tables, environmental information etc&amp;hellip; The action of extracting such data is&#xA;called fetching a sample. Once retrieved, these samples may be used for various purposes such as a&#xA;key to a stick-table, but most common usages consist in matching them against predefined constant&#xA;data called patterns.&lt;/p&gt;</description>
      </item>
    <item>
        <title>8. Logging</title>
        <link>https://pgsql.cc/haproxy/configuration-logging/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/configuration-logging/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;One of HAProxy&amp;rsquo;s strong points certainly lies is its precise logs. It probably provides the finest&#xA;level of information available for such a product, which is very important for troubleshooting&#xA;complex environments. Standard information provided in logs include client ports, TCP/HTTP state&#xA;timers, precise stream state at termination and precise termination cause, information about&#xA;decisions to direct traffic to a server, and of course the ability to capture arbitrary headers.&lt;/p&gt;</description>
      </item>
    <item>
        <title>9. Supported Filters</title>
        <link>https://pgsql.cc/haproxy/filters/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/filters/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Here are listed officially supported filters with the list of parameters they accept. Depending on&#xA;compile options, some of these filters might be unavailable. The list of available filters is&#xA;reported in haproxy -vv.&lt;/p&gt;&#xA;&lt;p&gt;See also: &amp;ldquo;filter&amp;rdquo;&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-9-1&#34;&gt;9.1. Trace&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;filter trace [name &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt;] [random-forwarding] [max-fwd &lt;code&gt;&amp;lt;max&amp;gt;&lt;/code&gt;] [hexdump]&lt;/p&gt;&#xA;&lt;p&gt;Arguments:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-0a0f0076-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;16&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-0a0f0076-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;name&amp;gt;               is an arbitrary name that will be reported in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     messages. If no name is provided, &amp;#34;TRACE&amp;#34; is used.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;quiet&amp;gt;              inhibits trace messages.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;random-forwarding&amp;gt;  enables the random forwarding of parsed data. By&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     default, this filter forwards all previously parsed&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     data. With this parameter, it only forwards a random&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     amount of the parsed data.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;max&amp;gt;                is the maximum amount of data that can be forwarded at&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     a time. &amp;#34;max-fwd&amp;#34; option can be combined with the&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     random forwarding. &amp;lt;max&amp;gt; must be an positive integer.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     0 means there is no limit.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;hexdump&amp;gt;             dumps all forwarded data to the server and the client.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;This filter can be used as a base to develop new filters. It defines all callbacks and print a&#xA;message on the standard error stream (stderr) with useful information for all of them. It may be&#xA;useful to debug the activity of other filters or, quite simply, HAProxy&amp;rsquo;s activity.&lt;/p&gt;</description>
      </item>
    <item>
        <title>10. FastCGI Applications</title>
        <link>https://pgsql.cc/haproxy/fastcgi/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/fastcgi/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is able to send HTTP requests to Responder FastCGI applications. This feature was added in&#xA;HAProxy 2.1. To do so, servers must be configured to use the FastCGI protocol (using the keyword&#xA;&amp;ldquo;proto fcgi&amp;rdquo; on the server line) and a FastCGI application must be configured and used by the&#xA;backend managing these servers (using the keyword &amp;ldquo;use-fcgi-app&amp;rdquo; into the proxy section). Several&#xA;FastCGI applications may be defined, but only one can be used at a time by a backend.&lt;/p&gt;</description>
      </item>
    <item>
        <title>11. Stick Tables and Peers</title>
        <link>https://pgsql.cc/haproxy/stick-tables-and-peers/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/stick-tables-and-peers/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Stick-tables in HAProxy are a mechanism which permits to associate a certain number of information&#xA;and metrics with a key of a certain type, and this for a certain duration after the last update.&#xA;This can be seen as a multicolumn line in a table, where the line number is defined by the key&#xA;value, and the columns all represent distinct criteria.&lt;/p&gt;</description>
      </item>
    <item>
        <title>12. Other Sections</title>
        <link>https://pgsql.cc/haproxy/other-sections/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/other-sections/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;The sections described below are less commonly used and usually support only a few parameters. There&#xA;is no implicit relation between any of them. They&amp;rsquo;re all started using a single keyword. None of&#xA;them is permitted before a &amp;ldquo;global&amp;rdquo; section. The support for some of them might be conditioned by&#xA;build options (e.g. anything SSL-related).&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-12-1&#34;&gt;12.1. Traces&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;For debugging purpose, it is possible to activate traces on an HAProxy&amp;rsquo;s subsystem. This will dump&#xA;debug messages about a specific subsystem. It is a very powerful tool to diagnose issues. Traces can&#xA;be dynamically configured via the CLI. It is also possible to predefined some settings in the&#xA;configuration file, in dedicated &amp;ldquo;traces&amp;rdquo; sections. More details about traces can be found in the&#xA;management guide. It remains a developer tools used during complex debugging sessions. It is pretty&#xA;verbose and have a cost, so use it with caution. And because it is a developer tool, there is no&#xA;warranty about the backward compatibility of this section.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Management Guide</title>
        <link></link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid></guid>
        <description></description>
      </item>
    <item>
        <title>1. Prerequisites</title>
        <link>https://pgsql.cc/haproxy/prerequisites/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/prerequisites/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;This document describes how to start, stop, manage, and troubleshoot HAProxy, as well as some known&#xA;limitations and traps to avoid. It does not describe how to configure it (for this please read&#xA;&lt;a href=&#34;https://pgsql.cc/haproxy/http-fundamentals/&#34;&gt;&lt;code&gt;configuration.txt&lt;/code&gt;&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;In this document it is assumed that the reader has sufficient administration skills on a UNIX-like&#xA;operating system, uses the shell on a daily basis and is familiar with troubleshooting utilities&#xA;such as strace and tcpdump.&lt;/p&gt;</description>
      </item>
    <item>
        <title>2. HAProxy Architecture</title>
        <link>https://pgsql.cc/haproxy/management-architecture/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/management-architecture/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is a multi-threaded, event-driven, non-blocking daemon. This means it uses event&#xA;multiplexing to schedule all of its activities instead of relying on the system to schedule between&#xA;multiple activities. Most of the time it runs as a single process, so the output of &amp;ldquo;ps aux&amp;rdquo; on a&#xA;system will report only one &amp;ldquo;haproxy&amp;rdquo; process, unless a soft reload is in progress and an older&#xA;process is finishing its job in parallel to the new one. It is thus always easy to trace its&#xA;activity using the strace utility. In order to scale with the number of available processors, by&#xA;default haproxy will start one worker thread per processor it is allowed to run on. Unless&#xA;explicitly configured differently, the incoming traffic is spread over all these threads, all&#xA;running the same event loop. A great care is taken to limit inter-thread dependencies to the strict&#xA;minimum, so as to try to achieve near-linear scalability. This has some impacts such as the fact&#xA;that a given connection is served by a single thread. Thus in order to use all available processing&#xA;capacity, it is needed to have at least as many connections as there are threads, which is almost&#xA;always granted.&lt;/p&gt;</description>
      </item>
    <item>
        <title>3. Starting HAProxy</title>
        <link>https://pgsql.cc/haproxy/starting/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/starting/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is started by invoking the &amp;ldquo;haproxy&amp;rdquo; program with a number of arguments passed on the&#xA;command line. The actual syntax is:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-58525e9d-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-58525e9d-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ haproxy &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&amp;lt;options&amp;gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;*&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;where [&lt;code&gt;&amp;lt;options&amp;gt;&lt;/code&gt;]* is any number of options. An option always starts with &amp;lsquo;-&amp;rsquo; followed by one&#xA;of more letters, and possibly followed by one or multiple extra arguments. Without any option,&#xA;HAProxy displays the help page with a reminder about supported options. Available options may vary&#xA;slightly based on the operating system. A fair number of these options overlap with an equivalent&#xA;one in the &amp;ldquo;global&amp;rdquo; section. In this case, the command line always has precedence over the&#xA;configuration file, so that the command line can be used to quickly enforce some settings without&#xA;touching the configuration files. The current list of options is:&lt;/p&gt;</description>
      </item>
    <item>
        <title>4. Stopping and Restarting HAProxy</title>
        <link>https://pgsql.cc/haproxy/stopping-and-restarting/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/stopping-and-restarting/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy supports a graceful and a hard stop. The hard stop is simple, when the SIGTERM signal is&#xA;sent to the haproxy process, it immediately quits and all established connections are closed. The&#xA;graceful stop is triggered when the SIGUSR1 signal is sent to the haproxy process. It consists in&#xA;only unbinding from listening ports, but continue to process existing connections until they close.&#xA;Once the last connection is closed, the process leaves.&lt;/p&gt;</description>
      </item>
    <item>
        <title>5. File-Descriptor Limitations</title>
        <link>https://pgsql.cc/haproxy/file-descriptors/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/file-descriptors/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;In order to ensure that all incoming connections will successfully be served, HAProxy computes at&#xA;load time the total number of file descriptors that will be needed during the process&amp;rsquo;s life. A&#xA;regular Unix process is generally granted 1024 file descriptors by default, and a privileged process&#xA;can raise this limit itself. This is one reason for starting HAProxy as root and letting it adjust&#xA;the limit. The default limit of 1024 file descriptors roughly allow about 500 concurrent connections&#xA;to be processed. The computation is based on the global maxconn parameter which limits the total&#xA;number of connections per process, the number of listeners, the number of servers which have a&#xA;health check enabled, the agent checks, the peers, the loggers and possibly a few other technical&#xA;requirements. A simple rough estimate of this number consists in simply doubling the maxconn value&#xA;and adding a few tens to get the approximate number of file descriptors needed.&lt;/p&gt;</description>
      </item>
    <item>
        <title>6. Memory Management</title>
        <link>https://pgsql.cc/haproxy/memory/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/memory/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy uses a simple and fast pool-based memory management. Since it relies on a small number of&#xA;different object types, it&amp;rsquo;s much more efficient to pick new objects from a pool which already&#xA;contains objects of the appropriate size than to call malloc() for each different size. The pools&#xA;are organized as a stack or LIFO, so that newly allocated objects are taken from recently released&#xA;objects still hot in the CPU caches. Pools of similar sizes are merged together, in order to limit&#xA;memory fragmentation.&lt;/p&gt;</description>
      </item>
    <item>
        <title>7. CPU Usage</title>
        <link>https://pgsql.cc/haproxy/cpu/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/cpu/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy normally spends most of its time in the system and a smaller part in userland. A finely&#xA;tuned 3.5 GHz CPU can sustain a rate about 80000 end-to-end connection setups and closes per second&#xA;at 100% CPU on a single core. When one core is saturated, typical figures are:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;95% system, 5% user for long TCP connections or large HTTP objects&lt;/li&gt;&#xA;&lt;li&gt;85% system and 15% user for short TCP connections or small HTTP objects in close mode&lt;/li&gt;&#xA;&lt;li&gt;70% system and 30% user for small HTTP objects in keep-alive mode&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The amount of rules processing and regular expressions will increase the user land part. The&#xA;presence of firewall rules, connection tracking, complex routing tables in the system will instead&#xA;increase the system part.&lt;/p&gt;</description>
      </item>
    <item>
        <title>8. Logging</title>
        <link>https://pgsql.cc/haproxy/management-logging/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/management-logging/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;For logging, HAProxy always relies on a syslog server since it does not perform any file-system&#xA;access. The standard way of using it is to send logs over UDP to the log server (by default on port&#xA;514). Very commonly this is configured to 127.0.0.1 where the local syslog daemon is running, but&#xA;it&amp;rsquo;s also used over the network to log to a central server. The central server provides additional&#xA;benefits especially in active-active scenarios where it is desirable to keep the logs merged in&#xA;arrival order. HAProxy may also make use of a UNIX socket to send its logs to the local syslog&#xA;daemon, but it is not recommended at all, because if the syslog server is restarted while haproxy&#xA;runs, the socket will be replaced and new logs will be lost. Since HAProxy will be isolated inside a&#xA;chroot jail, it will not have the ability to reconnect to the new socket. It has also been observed&#xA;in field that the log buffers in use on UNIX sockets are very small and lead to lost messages even&#xA;at very light loads. But this can be fine for testing however.&lt;/p&gt;</description>
      </item>
    <item>
        <title>9. Statistics and Monitoring</title>
        <link>https://pgsql.cc/haproxy/statistics-and-monitoring/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/statistics-and-monitoring/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;It is possible to query HAProxy about its status. The most commonly used mechanism is the HTTP&#xA;statistics page. This page also exposes an alternative CSV output format for monitoring tools. The&#xA;same format is provided on the Unix socket.&lt;/p&gt;&#xA;&lt;p&gt;Statistics are regroup in categories labelled as domains, corresponding to the multiple components&#xA;of HAProxy. There are two domains available: proxy and resolvers. If not specified, the proxy domain&#xA;is selected. Note that only the proxy statistics are printed on the HTTP page.&lt;/p&gt;</description>
      </item>
    <item>
        <title>10. Easier Configuration Management</title>
        <link>https://pgsql.cc/haproxy/configuration-management/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/configuration-management/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;It is very common that two HAProxy nodes constituting a cluster share exactly the same configuration&#xA;modulo a few addresses. Instead of having to maintain a duplicate configuration for each node, which&#xA;will inevitably diverge, it is possible to include environment variables in the configuration. Thus&#xA;multiple configuration may share the exact same file with only a few different system wide&#xA;environment variables. This started in version 1.5 where only addresses were allowed to include&#xA;environment variables, and 1.6 goes further by supporting environment variables everywhere. The&#xA;syntax is the same as in the UNIX shell, a variable starts with a dollar sign (&amp;rsquo;$&amp;rsquo;), followed by an&#xA;opening curly brace (&amp;rsquo;{&amp;rsquo;), then the variable name followed by the closing brace (&amp;rsquo;}&amp;rsquo;). Except for&#xA;addresses, environment variables are only interpreted in arguments surrounded with double quotes&#xA;(this was necessary not to break existing setups using regular expressions involving the dollar&#xA;symbol).&lt;/p&gt;</description>
      </item>
    <item>
        <title>11. Well-Known Traps to Avoid</title>
        <link>https://pgsql.cc/haproxy/traps/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/traps/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Once in a while, someone reports that after a system reboot, the haproxy service wasn&amp;rsquo;t started, and&#xA;that once they start it by hand it works. Most often, these people are running a clustered IP&#xA;address mechanism such as keepalived, to assign the service IP address to the master node only, and&#xA;while it used to work when they used to bind haproxy to address 0.0.0.0, it stopped working after&#xA;they bound it to the virtual IP address. What happens here is that when the service starts, the&#xA;virtual IP address is not yet owned by the local node, so when HAProxy wants to bind to it, the&#xA;system rejects this because it is not a local IP address. The fix doesn&amp;rsquo;t consist in delaying the&#xA;haproxy service startup (since it wouldn&amp;rsquo;t stand a restart), but instead to properly configure the&#xA;system to allow binding to non-local addresses. This is easily done on Linux by setting the&#xA;net.ipv4.ip_nonlocal_bind sysctl to 1. This is also needed in order to transparently intercept the&#xA;IP traffic that passes through HAProxy for a specific target address.&lt;/p&gt;</description>
      </item>
    <item>
        <title>12. Debugging and Performance Issues</title>
        <link>https://pgsql.cc/haproxy/debugging-and-performance/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/debugging-and-performance/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;When HAProxy is started with the &amp;ldquo;-d&amp;rdquo; option, it will stay in the foreground and will print one line&#xA;per event, such as an incoming connection, the end of a connection, and for each request or response&#xA;header line seen. This debug output is emitted before the contents are processed, so they don&amp;rsquo;t&#xA;consider the local modifications. The main use is to show the request and response without having to&#xA;run a network sniffer. The output is less readable when multiple connections are handled in&#xA;parallel, though the &amp;ldquo;debug2ansi&amp;rdquo; and &amp;ldquo;debug2html&amp;rdquo; scripts found in the examples/ directory&#xA;definitely help here by coloring the output.&lt;/p&gt;</description>
      </item>
    <item>
        <title>13. Security Considerations</title>
        <link>https://pgsql.cc/haproxy/security/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/security/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is designed to run with very limited privileges. The standard way to use it is to isolate it&#xA;into a chroot jail and to drop its privileges to a non-root user without any permissions inside this&#xA;jail so that if any future vulnerability were to be discovered, its compromise would not affect the&#xA;rest of the system.&lt;/p&gt;&#xA;&lt;p&gt;In order to perform a chroot, it first needs to be started as a root user. It is pointless to build&#xA;hand-made chroots to start the process there, these ones are painful to build, are never properly&#xA;maintained and always contain way more bugs than the main file-system. And in case of compromise,&#xA;the intruder can use the purposely built file-system. Unfortunately many administrators confuse&#xA;&amp;ldquo;start as root&amp;rdquo; and &amp;ldquo;run as root&amp;rdquo;, resulting in the uid change to be done prior to starting haproxy,&#xA;and reducing the effective security restrictions.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
