haproxy-tools 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.ruby-version +1 -1
- data/.simplecov +1 -13
- data/.standard.yml +1 -0
- data/.travis.yml +1 -3
- data/CHANGES.rdoc +7 -0
- data/Gemfile +1 -1
- data/README.rdoc +1 -2
- data/Rakefile +10 -9
- data/bin/rake +29 -0
- data/bin/rspec +29 -0
- data/bin/standardrb +29 -0
- data/docs/haproxy-1.7-configuration.txt +14 -11
- data/docs/haproxy-1.8-configuration.txt +214 -100
- data/docs/haproxy-1.9-configuration.txt +2213 -1355
- data/haproxy-tools.gemspec +23 -20
- data/lib/haproxy-tools.rb +3 -1
- data/lib/haproxy/config.rb +9 -9
- data/lib/haproxy/parser.rb +42 -39
- data/lib/haproxy/renderer.rb +21 -18
- data/lib/haproxy/treetop/config.treetop +1 -1
- data/lib/haproxy/treetop/nodes.rb +32 -24
- data/lib/haproxy/version.rb +3 -1
- data/lib/haproxy_tools.rb +7 -5
- data/spec/haproxy/config_spec.rb +86 -75
- data/spec/haproxy/parser_spec.rb +111 -87
- data/spec/haproxy/treetop/config_parser_spec.rb +44 -43
- data/spec/spec_helper.rb +9 -6
- metadata +43 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a0532c7e68ca6fdbbbd4a8c7f620f86d712863a724855ad54017839dc0c668b2
|
4
|
+
data.tar.gz: d16e7dc9cb1db7dd4493ed471d22328cd1a7951cd6aa0866f30d38c10acf9547
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd34fa108c6d3886483e32458098fdc27a1f4d29018378fb5281a2ebc999ff38ad8695256024225b84fc6bb0ff240d14609907ae36dbcd3e3556489236427c6a
|
7
|
+
data.tar.gz: 7501bb2ac3cf358d882f384e553dff17e344052e7585b042d24a986f412bbe4525b661ad6a333ce159ccc229ecdaf99371622de4b9590d59eefb45c5b483b12a
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.6.2
|
data/.simplecov
CHANGED
@@ -1,13 +1 @@
|
|
1
|
-
|
2
|
-
def format(result)
|
3
|
-
SimpleCov::Formatter::HTMLFormatter.new.format(result)
|
4
|
-
File.open('coverage/covered_percent', 'w') do |f|
|
5
|
-
f.puts result.source_files.covered_percent.to_f
|
6
|
-
end
|
7
|
-
end
|
8
|
-
end
|
9
|
-
SimpleCov.formatter = SimpleCov::Formatter::QualityFormatter
|
10
|
-
|
11
|
-
SimpleCov.start do
|
12
|
-
add_filter '/spec/'
|
13
|
-
end
|
1
|
+
SimpleCov.start
|
data/.standard.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby_version: 2.2
|
data/.travis.yml
CHANGED
data/CHANGES.rdoc
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
== 0.6.0
|
2
|
+
* [#19] Allow underscores in keywords (@cocker-cc)
|
3
|
+
* Removed support for ruby versions older than 2.2
|
4
|
+
* Fixes rendering of configs that have no value
|
5
|
+
* Added standardrb linting
|
6
|
+
* Switched to new style rspec syntax
|
7
|
+
|
1
8
|
== 0.5.0
|
2
9
|
* [#16] Updated Readme (@chriswessells)
|
3
10
|
* [#14] Adds Server Attributes for More Versions (@chriswessells)
|
data/Gemfile
CHANGED
data/README.rdoc
CHANGED
data/Rakefile
CHANGED
@@ -1,25 +1,26 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
|
3
|
-
require
|
3
|
+
require "bundler/gem_tasks"
|
4
4
|
|
5
|
-
require
|
5
|
+
require "rspec/core/rake_task"
|
6
6
|
RSpec::Core::RakeTask.new(:spec)
|
7
7
|
|
8
|
-
require
|
8
|
+
require "yard"
|
9
9
|
YARD::Rake::YardocTask.new
|
10
10
|
|
11
|
+
require "standard/rake"
|
12
|
+
|
11
13
|
begin
|
12
|
-
require
|
14
|
+
require "cane/rake_task"
|
13
15
|
|
14
16
|
desc "Run cane to check quality metrics"
|
15
17
|
Cane::RakeTask.new(:cane) do |cane|
|
16
|
-
cane.
|
17
|
-
cane.
|
18
|
-
cane.
|
19
|
-
cane.gte = {'coverage/covered_percent' => 95}
|
18
|
+
cane.no_abc = true
|
19
|
+
cane.no_style = true
|
20
|
+
cane.gte = {"coverage/.last_run.json" => 95}
|
20
21
|
end
|
21
22
|
rescue LoadError
|
22
23
|
warn "cane not available, quality task not provided."
|
23
24
|
end
|
24
25
|
|
25
|
-
task :
|
26
|
+
task default: [:spec, :standard, :cane]
|
data/bin/rake
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rake' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rake", "rake")
|
data/bin/rspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rspec' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 150) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rspec-core", "rspec")
|
data/bin/standardrb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'standardrb' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("standard", "standardrb")
|
@@ -4,7 +4,7 @@
|
|
4
4
|
----------------------
|
5
5
|
version 1.7
|
6
6
|
willy tarreau
|
7
|
-
2018/
|
7
|
+
2018/04/30
|
8
8
|
|
9
9
|
|
10
10
|
This document covers the configuration language as implemented in the version
|
@@ -724,7 +724,7 @@ group <group name>
|
|
724
724
|
See also "gid" and "user".
|
725
725
|
|
726
726
|
log <address> [len <length>] [format <format>] <facility> [max level [min level]]
|
727
|
-
Adds a global syslog server.
|
727
|
+
Adds a global syslog server. Several global servers can be defined. They
|
728
728
|
will receive logs for startups and exits, as well as all logs from proxies
|
729
729
|
configured with "log global".
|
730
730
|
|
@@ -1847,7 +1847,7 @@ errorloc X X X X
|
|
1847
1847
|
errorloc302 X X X X
|
1848
1848
|
-- keyword -------------------------- defaults - frontend - listen -- backend -
|
1849
1849
|
errorloc303 X X X X
|
1850
|
-
force-persist -
|
1850
|
+
force-persist - - X X
|
1851
1851
|
filter - X X X
|
1852
1852
|
fullconn X - X X
|
1853
1853
|
grace X X X X
|
@@ -1860,7 +1860,7 @@ http-response - X X X
|
|
1860
1860
|
http-reuse X - X X
|
1861
1861
|
http-send-name-header - - X X
|
1862
1862
|
id - X X X
|
1863
|
-
ignore-persist -
|
1863
|
+
ignore-persist - - X X
|
1864
1864
|
load-server-state-from-file X - X X
|
1865
1865
|
log (*) X X X X
|
1866
1866
|
log-format X X X -
|
@@ -3287,7 +3287,7 @@ email-alert to <emailaddr>
|
|
3287
3287
|
force-persist { if | unless } <condition>
|
3288
3288
|
Declare a condition to force persistence on down servers
|
3289
3289
|
May be used in sections: defaults | frontend | listen | backend
|
3290
|
-
no |
|
3290
|
+
no | no | yes | yes
|
3291
3291
|
|
3292
3292
|
By default, requests are not dispatched to down servers. It is possible to
|
3293
3293
|
force this using "option persist", but it is unconditional and redispatches
|
@@ -4556,7 +4556,7 @@ id <value>
|
|
4556
4556
|
ignore-persist { if | unless } <condition>
|
4557
4557
|
Declare a condition to ignore persistence
|
4558
4558
|
May be used in sections: defaults | frontend | listen | backend
|
4559
|
-
no |
|
4559
|
+
no | no | yes | yes
|
4560
4560
|
|
4561
4561
|
By default, when cookie persistence is enabled, every requests containing
|
4562
4562
|
the cookie are unconditionally persistent (assuming the target server is up
|
@@ -5496,9 +5496,6 @@ no option http-keep-alive
|
|
5496
5496
|
available to try optimize server selection so that if the server currently
|
5497
5497
|
attached to an idle connection is usable, it will be used.
|
5498
5498
|
|
5499
|
-
In general it is preferred to use "option http-server-close" with application
|
5500
|
-
servers, and some static servers might benefit from "option http-keep-alive".
|
5501
|
-
|
5502
5499
|
At the moment, logs will not indicate whether requests came from the same
|
5503
5500
|
session or not. The accept date reported in the logs corresponds to the end
|
5504
5501
|
of the previous request, and the request time corresponds to the time spent
|
@@ -10384,7 +10381,12 @@ interface <interface>
|
|
10384
10381
|
interface, not an aliased interface. It is also possible to bind multiple
|
10385
10382
|
frontends to the same address if they are bound to different interfaces. Note
|
10386
10383
|
that binding to a network interface requires root privileges. This parameter
|
10387
|
-
is only compatible with TCPv4/TCPv6 sockets.
|
10384
|
+
is only compatible with TCPv4/TCPv6 sockets. When specified, return traffic
|
10385
|
+
uses the same interface as inbound traffic, and its associated routing table,
|
10386
|
+
even if there are explicit routes through different interfaces configured.
|
10387
|
+
This can prove useful to address asymmetric routing issues when the same
|
10388
|
+
client IP addresses need to be able to reach frontends hosted on different
|
10389
|
+
interfaces.
|
10388
10390
|
|
10389
10391
|
level <level>
|
10390
10392
|
This setting is used with the stats sockets only to restrict the nature of
|
@@ -13886,7 +13888,8 @@ ssl_fc_has_sni : boolean
|
|
13886
13888
|
|
13887
13889
|
ssl_fc_is_resumed : boolean
|
13888
13890
|
Returns true if the SSL/TLS session has been resumed through the use of
|
13889
|
-
SSL session cache or TLS tickets
|
13891
|
+
SSL session cache or TLS tickets on an incoming connection over an SSL/TLS
|
13892
|
+
transport layer.
|
13890
13893
|
|
13891
13894
|
ssl_fc_npn : string
|
13892
13895
|
This extracts the Next Protocol Negotiation field from an incoming connection
|
@@ -4,7 +4,7 @@
|
|
4
4
|
----------------------
|
5
5
|
version 1.8
|
6
6
|
willy tarreau
|
7
|
-
|
7
|
+
2019/02/11
|
8
8
|
|
9
9
|
|
10
10
|
This document covers the configuration language as implemented in the version
|
@@ -580,8 +580,10 @@ The following keywords are supported in the "global" section :
|
|
580
580
|
- setenv
|
581
581
|
- stats
|
582
582
|
- ssl-default-bind-ciphers
|
583
|
+
- ssl-default-bind-ciphersuites
|
583
584
|
- ssl-default-bind-options
|
584
585
|
- ssl-default-server-ciphers
|
586
|
+
- ssl-default-server-ciphersuites
|
585
587
|
- ssl-default-server-options
|
586
588
|
- ssl-dh-param-file
|
587
589
|
- ssl-server-verify
|
@@ -818,7 +820,7 @@ group <group name>
|
|
818
820
|
See also "gid" and "user".
|
819
821
|
|
820
822
|
log <address> [len <length>] [format <format>] <facility> [max level [min level]]
|
821
|
-
Adds a global syslog server.
|
823
|
+
Adds a global syslog server. Several global servers can be defined. They
|
822
824
|
will receive logs for starts and exits, as well as all logs from proxies
|
823
825
|
configured with "log global".
|
824
826
|
|
@@ -915,14 +917,14 @@ nbproc <number>
|
|
915
917
|
mode. By default, only one process is created, which is the recommended mode
|
916
918
|
of operation. For systems limited to small sets of file descriptors per
|
917
919
|
process, it may be needed to fork multiple daemons. USING MULTIPLE PROCESSES
|
918
|
-
IS HARDER TO DEBUG AND IS REALLY DISCOURAGED. See also "daemon"
|
920
|
+
IS HARDER TO DEBUG AND IS REALLY DISCOURAGED. See also "daemon" and
|
921
|
+
"nbthread".
|
919
922
|
|
920
923
|
nbthread <number>
|
921
924
|
This setting is only available when support for threads was built in. It
|
922
925
|
creates <number> threads for each created processes. It means if HAProxy is
|
923
926
|
started in foreground, it only creates <number> threads for the first
|
924
|
-
process.
|
925
|
-
MUST BE ENABLED WITH CAUTION AND AT YOUR OWN RISK. See also "nbproc".
|
927
|
+
process. See also "nbproc".
|
926
928
|
|
927
929
|
pidfile <pidfile>
|
928
930
|
Writes PIDs of all daemons into file <pidfile>. This option is equivalent to
|
@@ -984,11 +986,25 @@ setenv <name> <value>
|
|
984
986
|
ssl-default-bind-ciphers <ciphers>
|
985
987
|
This setting is only available when support for OpenSSL was built in. It sets
|
986
988
|
the default string describing the list of cipher algorithms ("cipher suite")
|
987
|
-
that are negotiated during the SSL/TLS handshake
|
988
|
-
do not explicitly define theirs. The format of the string
|
989
|
-
"man 1 ciphers" from OpenSSL man pages
|
990
|
-
|
991
|
-
|
989
|
+
that are negotiated during the SSL/TLS handshake up to TLSv1.2 for all
|
990
|
+
"bind" lines which do not explicitly define theirs. The format of the string
|
991
|
+
is defined in "man 1 ciphers" from OpenSSL man pages. For background
|
992
|
+
information and recommendations see e.g.
|
993
|
+
(https://wiki.mozilla.org/Security/Server_Side_TLS) and
|
994
|
+
(https://mozilla.github.io/server-side-tls/ssl-config-generator/). For TLSv1.3
|
995
|
+
cipher configuration, please check the "ssl-default-bind-ciphersuites" keyword.
|
996
|
+
Please check the "bind" keyword for more information.
|
997
|
+
|
998
|
+
ssl-default-bind-ciphersuites <ciphersuites>
|
999
|
+
This setting is only available when support for OpenSSL was built in and
|
1000
|
+
OpenSSL 1.1.1 or later was used to build HAProxy. It sets the default string
|
1001
|
+
describing the list of cipher algorithms ("cipher suite") that are negotiated
|
1002
|
+
during the TLSv1.3 handshake for all "bind" lines which do not explicitly define
|
1003
|
+
theirs. The format of the string is defined in
|
1004
|
+
"man 1 ciphers" from OpenSSL man pages under the section "ciphersuites". For
|
1005
|
+
cipher configuration for TLSv1.2 and earlier, please check the
|
1006
|
+
"ssl-default-bind-ciphers" keyword. Please check the "bind" keyword for more
|
1007
|
+
information.
|
992
1008
|
|
993
1009
|
ssl-default-bind-options [<option>]...
|
994
1010
|
This setting is only available when support for OpenSSL was built in. It sets
|
@@ -1002,10 +1018,26 @@ ssl-default-bind-options [<option>]...
|
|
1002
1018
|
ssl-default-server-ciphers <ciphers>
|
1003
1019
|
This setting is only available when support for OpenSSL was built in. It
|
1004
1020
|
sets the default string describing the list of cipher algorithms that are
|
1005
|
-
negotiated during the SSL/TLS handshake with the server,
|
1006
|
-
lines which do not explicitly define theirs. The format of
|
1007
|
-
defined in "man 1 ciphers"
|
1008
|
-
information.
|
1021
|
+
negotiated during the SSL/TLS handshake up to TLSv1.2 with the server,
|
1022
|
+
for all "server" lines which do not explicitly define theirs. The format of
|
1023
|
+
the string is defined in "man 1 ciphers" from OpenSSL man pages. For background
|
1024
|
+
information and recommendations see e.g.
|
1025
|
+
(https://wiki.mozilla.org/Security/Server_Side_TLS) and
|
1026
|
+
(https://mozilla.github.io/server-side-tls/ssl-config-generator/).
|
1027
|
+
For TLSv1.3 cipher configuration, please check the
|
1028
|
+
"ssl-default-server-ciphersuites" keyword. Please check the "server" keyword
|
1029
|
+
for more information.
|
1030
|
+
|
1031
|
+
ssl-default-server-ciphersuites <ciphersuites>
|
1032
|
+
This setting is only available when support for OpenSSL was built in and
|
1033
|
+
OpenSSL 1.1.1 or later was used to build HAProxy. It sets the default
|
1034
|
+
string describing the list of cipher algorithms that are negotiated during
|
1035
|
+
the TLSv1.3 handshake with the server, for all "server" lines which do not
|
1036
|
+
explicitly define theirs. The format of the string is defined in
|
1037
|
+
"man 1 ciphers" from OpenSSL man pages under the section "ciphersuites". For
|
1038
|
+
cipher configuration for TLSv1.2 and earlier, please check the
|
1039
|
+
"ssl-default-server-ciphers" keyword. Please check the "server" keyword for
|
1040
|
+
more information.
|
1009
1041
|
|
1010
1042
|
ssl-default-server-options [<option>]...
|
1011
1043
|
This setting is only available when support for OpenSSL was built in. It sets
|
@@ -1651,7 +1683,7 @@ tune.ssl.cachesize <number>
|
|
1651
1683
|
this value to 0 disables the SSL session cache.
|
1652
1684
|
|
1653
1685
|
tune.ssl.force-private-cache
|
1654
|
-
This
|
1686
|
+
This option disables SSL session cache sharing between all processes. It
|
1655
1687
|
should normally not be used since it will force many renegotiations due to
|
1656
1688
|
clients hitting a random process. But it may be required on some operating
|
1657
1689
|
systems where none of the SSL cache synchronization method may be used. In
|
@@ -2039,7 +2071,7 @@ errorloc X X X X
|
|
2039
2071
|
errorloc302 X X X X
|
2040
2072
|
-- keyword -------------------------- defaults - frontend - listen -- backend -
|
2041
2073
|
errorloc303 X X X X
|
2042
|
-
force-persist -
|
2074
|
+
force-persist - - X X
|
2043
2075
|
filter - X X X
|
2044
2076
|
fullconn X - X X
|
2045
2077
|
grace X X X X
|
@@ -2052,7 +2084,7 @@ http-response - X X X
|
|
2052
2084
|
http-reuse X - X X
|
2053
2085
|
http-send-name-header - - X X
|
2054
2086
|
id - X X X
|
2055
|
-
ignore-persist -
|
2087
|
+
ignore-persist - - X X
|
2056
2088
|
load-server-state-from-file X - X X
|
2057
2089
|
log (*) X X X X
|
2058
2090
|
log-format X X X -
|
@@ -2471,6 +2503,11 @@ balance url_param <param> [check_post]
|
|
2471
2503
|
algorithm, mode nor option have been set. The algorithm may only be set once
|
2472
2504
|
for each backend.
|
2473
2505
|
|
2506
|
+
With authentication schemes that require the same connection like NTLM, URI
|
2507
|
+
based alghoritms must not be used, as they would cause subsequent requests
|
2508
|
+
to be routed to different backend servers, breaking the invalid assumptions
|
2509
|
+
NTLM relies on.
|
2510
|
+
|
2474
2511
|
Examples :
|
2475
2512
|
balance roundrobin
|
2476
2513
|
balance url_param userid
|
@@ -3503,7 +3540,7 @@ email-alert to <emailaddr>
|
|
3503
3540
|
force-persist { if | unless } <condition>
|
3504
3541
|
Declare a condition to force persistence on down servers
|
3505
3542
|
May be used in sections: defaults | frontend | listen | backend
|
3506
|
-
no |
|
3543
|
+
no | no | yes | yes
|
3507
3544
|
|
3508
3545
|
By default, requests are not dispatched to down servers. It is possible to
|
3509
3546
|
force this using "option persist", but it is unconditional and redispatches
|
@@ -4146,9 +4183,11 @@ http-request { allow | auth [realm <realm>] | redirect <rule> | reject |
|
|
4146
4183
|
|
4147
4184
|
- { track-sc0 | track-sc1 | track-sc2 } <key> [table <table>] :
|
4148
4185
|
enables tracking of sticky counters from current request. These rules
|
4149
|
-
do not stop evaluation and do not change default action.
|
4150
|
-
counters may be simultaneously tracked by the same connection
|
4151
|
-
|
4186
|
+
do not stop evaluation and do not change default action. The number of
|
4187
|
+
counters that may be simultaneously tracked by the same connection is set
|
4188
|
+
in MAX_SESS_STKCTR at build time (reported in haproxy -vv) which defaults
|
4189
|
+
to 3, so the track-sc number is between 0 and (MAX_SESS_STCKTR-1). The
|
4190
|
+
first "track-sc0" rule executed enables tracking of the counters of the
|
4152
4191
|
specified table as the first set. The first "track-sc1" rule executed
|
4153
4192
|
enables tracking of the counters of the specified table as the second
|
4154
4193
|
set. The first "track-sc2" rule executed enables tracking of the
|
@@ -4771,10 +4810,8 @@ http-reuse { never | safe | aggressive | always }
|
|
4771
4810
|
- connections sent to a server with a TLS SNI extension are marked private
|
4772
4811
|
and are never shared;
|
4773
4812
|
|
4774
|
-
- connections
|
4775
|
-
|
4776
|
-
as NTLM) relying on the connection, these connections are marked private
|
4777
|
-
and are never shared;
|
4813
|
+
- connections with certain bogus authentication schemes (relying on the
|
4814
|
+
connection) like NTLM are detected, marked private and are never shared;
|
4778
4815
|
|
4779
4816
|
No connection pool is involved, once a session dies, the last idle connection
|
4780
4817
|
it was attached to is deleted at the same time. This ensures that connections
|
@@ -4817,7 +4854,7 @@ id <value>
|
|
4817
4854
|
ignore-persist { if | unless } <condition>
|
4818
4855
|
Declare a condition to ignore persistence
|
4819
4856
|
May be used in sections: defaults | frontend | listen | backend
|
4820
|
-
no |
|
4857
|
+
no | no | yes | yes
|
4821
4858
|
|
4822
4859
|
By default, when cookie persistence is enabled, every requests containing
|
4823
4860
|
the cookie are unconditionally persistent (assuming the target server is up
|
@@ -5759,9 +5796,6 @@ no option http-keep-alive
|
|
5759
5796
|
available to try optimize server selection so that if the server currently
|
5760
5797
|
attached to an idle connection is usable, it will be used.
|
5761
5798
|
|
5762
|
-
In general it is preferred to use "option http-server-close" with application
|
5763
|
-
servers, and some static servers might benefit from "option http-keep-alive".
|
5764
|
-
|
5765
5799
|
At the moment, logs will not indicate whether requests came from the same
|
5766
5800
|
session or not. The accept date reported in the logs corresponds to the end
|
5767
5801
|
of the previous request, and the request time corresponds to the time spent
|
@@ -6064,7 +6098,7 @@ no option httpclose
|
|
6064
6098
|
option httplog [ clf ]
|
6065
6099
|
Enable logging of HTTP request, session state and timers
|
6066
6100
|
May be used in sections : defaults | frontend | listen | backend
|
6067
|
-
yes | yes | yes |
|
6101
|
+
yes | yes | yes | no
|
6068
6102
|
Arguments :
|
6069
6103
|
clf if the "clf" argument is added, then the output format will be
|
6070
6104
|
the CLF format instead of HAProxy's default HTTP format. You can
|
@@ -6080,8 +6114,6 @@ option httplog [ clf ]
|
|
6080
6114
|
frontend, backend and server name, and of course the source address and
|
6081
6115
|
ports.
|
6082
6116
|
|
6083
|
-
This option may be set either in the frontend or the backend.
|
6084
|
-
|
6085
6117
|
Specifying only "option httplog" will automatically clear the 'clf' mode
|
6086
6118
|
if it was set by default.
|
6087
6119
|
|
@@ -6150,7 +6182,7 @@ no option independent-streams
|
|
6150
6182
|
data sent to the server. Doing so will typically break large HTTP posts from
|
6151
6183
|
slow lines, so use it with caution.
|
6152
6184
|
|
6153
|
-
Note: older versions used to call this setting "option
|
6185
|
+
Note: older versions used to call this setting "option independant-streams"
|
6154
6186
|
with a spelling mistake. This spelling is still supported but
|
6155
6187
|
deprecated.
|
6156
6188
|
|
@@ -6466,8 +6498,9 @@ no option prefer-last-server
|
|
6466
6498
|
close of the connection. This can make sense for static file servers. It does
|
6467
6499
|
not make much sense to use this in combination with hashing algorithms. Note,
|
6468
6500
|
haproxy already automatically tries to stick to a server which sends a 401 or
|
6469
|
-
to a proxy which sends a 407 (authentication required)
|
6470
|
-
|
6501
|
+
to a proxy which sends a 407 (authentication required), when the load
|
6502
|
+
balancing algorithm is not deterministic. This is mandatory for use with the
|
6503
|
+
broken NTLM authentication challenge, and significantly helps in
|
6471
6504
|
troubleshooting some faulty applications. Option prefer-last-server might be
|
6472
6505
|
desirable in these environments as well, to avoid redistributing the traffic
|
6473
6506
|
after every other response.
|
@@ -6500,8 +6533,8 @@ no option redispatch
|
|
6500
6533
|
definitely stick to it because they cannot flush the cookie, so they will not
|
6501
6534
|
be able to access the service anymore.
|
6502
6535
|
|
6503
|
-
Specifying "option redispatch" will allow the proxy to break
|
6504
|
-
persistence and redistribute them to a working server.
|
6536
|
+
Specifying "option redispatch" will allow the proxy to break cookie or
|
6537
|
+
consistent hash based persistence and redistribute them to a working server.
|
6505
6538
|
|
6506
6539
|
It also allows to retry connections to another server in case of multiple
|
6507
6540
|
connection failures. Of course, it requires having "retries" set to a nonzero
|
@@ -6540,7 +6573,7 @@ option smtpchk <hello> <domain>
|
|
6540
6573
|
yes | no | yes | yes
|
6541
6574
|
Arguments :
|
6542
6575
|
<hello> is an optional argument. It is the "hello" command to use. It can
|
6543
|
-
be either "HELO" (for SMTP) or "EHLO" (for
|
6576
|
+
be either "HELO" (for SMTP) or "EHLO" (for ESMTP). All other
|
6544
6577
|
values will be turned into the default command ("HELO").
|
6545
6578
|
|
6546
6579
|
<domain> is the domain name to present to the server. It may only be
|
@@ -6931,7 +6964,7 @@ option tcpka
|
|
6931
6964
|
option tcplog
|
6932
6965
|
Enable advanced logging of TCP connections with session state and timers
|
6933
6966
|
May be used in sections : defaults | frontend | listen | backend
|
6934
|
-
yes | yes | yes |
|
6967
|
+
yes | yes | yes | no
|
6935
6968
|
Arguments : none
|
6936
6969
|
|
6937
6970
|
By default, the log output format is very poor, as it only contains the
|
@@ -6943,8 +6976,6 @@ option tcplog
|
|
6943
6976
|
find which of the client or server disconnects or times out. For normal HTTP
|
6944
6977
|
proxies, it's better to use "option httplog" which is even more complete.
|
6945
6978
|
|
6946
|
-
This option may be set either in the frontend or the backend.
|
6947
|
-
|
6948
6979
|
"option tcplog" overrides any previous "log-format" directive.
|
6949
6980
|
|
6950
6981
|
See also : "option httplog", and section 8 about logging.
|
@@ -9208,16 +9239,18 @@ tcp-request connection <action> [{if | unless} <condition>]
|
|
9208
9239
|
|
9209
9240
|
- { track-sc0 | track-sc1 | track-sc2 } <key> [table <table>] :
|
9210
9241
|
enables tracking of sticky counters from current connection. These
|
9211
|
-
rules do not stop evaluation and do not change default action.
|
9212
|
-
of counters may be simultaneously tracked by the same
|
9213
|
-
|
9214
|
-
|
9215
|
-
|
9216
|
-
|
9217
|
-
|
9218
|
-
|
9219
|
-
|
9220
|
-
|
9242
|
+
rules do not stop evaluation and do not change default action. The
|
9243
|
+
number of counters that may be simultaneously tracked by the same
|
9244
|
+
connection is set in MAX_SESS_STKCTR at build time (reported in
|
9245
|
+
haproxy -vv) whichs defaults to 3, so the track-sc number is between 0
|
9246
|
+
and (MAX_SESS_STCKTR-1). The first "track-sc0" rule executed enables
|
9247
|
+
tracking of the counters of the specified table as the first set. The
|
9248
|
+
first "track-sc1" rule executed enables tracking of the counters of the
|
9249
|
+
specified table as the second set. The first "track-sc2" rule executed
|
9250
|
+
enables tracking of the counters of the specified table as the third
|
9251
|
+
set. It is a recommended practice to use the first set of counters for
|
9252
|
+
the per-frontend counters and the second set for the per-backend ones.
|
9253
|
+
But this is just a guideline, all may be used everywhere.
|
9221
9254
|
|
9222
9255
|
These actions take one or two arguments :
|
9223
9256
|
<key> is mandatory, and is a sample expression rule as described
|
@@ -10454,8 +10487,11 @@ accept-proxy
|
|
10454
10487
|
setting of which client is allowed to use the protocol.
|
10455
10488
|
|
10456
10489
|
allow-0rtt
|
10457
|
-
Allow receiving early data when using
|
10458
|
-
due to security considerations.
|
10490
|
+
Allow receiving early data when using TLSv1.3. This is disabled by default,
|
10491
|
+
due to security considerations. Because it is vulnerable to replay attacks,
|
10492
|
+
you should only allow if for requests that are safe to replay, ie requests
|
10493
|
+
that are idempotent. You can use the "wait-for-handshake" action for any
|
10494
|
+
request that wouldn't be safe with early data.
|
10459
10495
|
|
10460
10496
|
alpn <protocols>
|
10461
10497
|
This enables the TLS ALPN extension and advertises the specified protocol
|
@@ -10517,13 +10553,20 @@ ca-sign-pass <passphrase>
|
|
10517
10553
|
ciphers <ciphers>
|
10518
10554
|
This setting is only available when support for OpenSSL was built in. It sets
|
10519
10555
|
the string describing the list of cipher algorithms ("cipher suite") that are
|
10520
|
-
negotiated during the SSL/TLS handshake. The format of the
|
10521
|
-
in "man 1 ciphers" from OpenSSL man pages
|
10522
|
-
|
10523
|
-
|
10524
|
-
|
10525
|
-
|
10526
|
-
|
10556
|
+
negotiated during the SSL/TLS handshake up to TLSv1.2. The format of the
|
10557
|
+
string is defined in "man 1 ciphers" from OpenSSL man pages. For background
|
10558
|
+
information and recommendations see e.g.
|
10559
|
+
(https://wiki.mozilla.org/Security/Server_Side_TLS) and
|
10560
|
+
(https://mozilla.github.io/server-side-tls/ssl-config-generator/). For TLSv1.3
|
10561
|
+
cipher configuration, please check the "ciphersuites" keyword.
|
10562
|
+
|
10563
|
+
ciphersuites <ciphersuites>
|
10564
|
+
This setting is only available when support for OpenSSL was built in and
|
10565
|
+
OpenSSL 1.1.1 or later was used to build HAProxy. It sets the string describing
|
10566
|
+
the list of cipher algorithms ("cipher suite") that are negotiated during the
|
10567
|
+
TLSv1.3 handshake. The format of the string is defined in "man 1 ciphers" from
|
10568
|
+
OpenSSL man pages under the "ciphersuites" section. For cipher configuration
|
10569
|
+
for TLSv1.2 and earlier, please check the "ciphers" keyword.
|
10527
10570
|
|
10528
10571
|
crl-file <crlfile>
|
10529
10572
|
This setting is only available when support for OpenSSL was built in. It
|
@@ -10768,7 +10811,12 @@ interface <interface>
|
|
10768
10811
|
interface, not an aliased interface. It is also possible to bind multiple
|
10769
10812
|
frontends to the same address if they are bound to different interfaces. Note
|
10770
10813
|
that binding to a network interface requires root privileges. This parameter
|
10771
|
-
is only compatible with TCPv4/TCPv6 sockets.
|
10814
|
+
is only compatible with TCPv4/TCPv6 sockets. When specified, return traffic
|
10815
|
+
uses the same interface as inbound traffic, and its associated routing table,
|
10816
|
+
even if there are explicit routes through different interfaces configured.
|
10817
|
+
This can prove useful to address asymmetric routing issues when the same
|
10818
|
+
client IP addresses need to be able to reach frontends hosted on different
|
10819
|
+
interfaces.
|
10772
10820
|
|
10773
10821
|
level <level>
|
10774
10822
|
This setting is used with the stats sockets only to restrict the nature of
|
@@ -11211,9 +11259,10 @@ check-send-proxy
|
|
11211
11259
|
"check-send-proxy" option needs to be used to force the use of the
|
11212
11260
|
protocol. See also the "send-proxy" option for more information.
|
11213
11261
|
|
11214
|
-
check-sni
|
11262
|
+
check-sni <sni>
|
11215
11263
|
This option allows you to specify the SNI to be used when doing health checks
|
11216
|
-
over SSL.
|
11264
|
+
over SSL. It is only possible to use a string to set <sni>. If you want to
|
11265
|
+
set a SNI for proxied traffic, see "sni".
|
11217
11266
|
|
11218
11267
|
check-ssl
|
11219
11268
|
This option forces encryption of all health checks over SSL, regardless of
|
@@ -11228,14 +11277,23 @@ check-ssl
|
|
11228
11277
|
this option.
|
11229
11278
|
|
11230
11279
|
ciphers <ciphers>
|
11231
|
-
This
|
11232
|
-
|
11233
|
-
|
11234
|
-
|
11235
|
-
|
11236
|
-
|
11237
|
-
|
11238
|
-
|
11280
|
+
This setting is only available when support for OpenSSL was built in. This
|
11281
|
+
option sets the string describing the list of cipher algorithms that is
|
11282
|
+
negotiated during the SSL/TLS handshake with the server. The format of the
|
11283
|
+
string is defined in "man 1 ciphers" from OpenSSL man pages. For background
|
11284
|
+
information and recommendations see e.g.
|
11285
|
+
(https://wiki.mozilla.org/Security/Server_Side_TLS) and
|
11286
|
+
(https://mozilla.github.io/server-side-tls/ssl-config-generator/). For TLSv1.3
|
11287
|
+
cipher configuration, please check the "ciphersuites" keyword.
|
11288
|
+
|
11289
|
+
ciphersuites <ciphersuites>
|
11290
|
+
This setting is only available when support for OpenSSL was built in and
|
11291
|
+
OpenSSL 1.1.1 or later was used to build HAProxy. This option sets the string
|
11292
|
+
describing the list of cipher algorithms that is negotiated during the TLS
|
11293
|
+
1.3 handshake with the server. The format of the string is defined in
|
11294
|
+
"man 1 ciphers" from OpenSSL man pages under the "ciphersuites" section.
|
11295
|
+
For cipher configuration for TLSv1.2 and earlier, please check the "ciphers"
|
11296
|
+
keyword.
|
11239
11297
|
|
11240
11298
|
cookie <value>
|
11241
11299
|
The "cookie" parameter sets the cookie value assigned to the server to
|
@@ -11625,6 +11683,40 @@ rise <count>
|
|
11625
11683
|
after <count> consecutive successful health checks. This value defaults to 2
|
11626
11684
|
if unspecified. See also the "check", "inter" and "fall" parameters.
|
11627
11685
|
|
11686
|
+
resolve-opts <option>,<option>,...
|
11687
|
+
Comma separated list of options to apply to DNS resolution linked to this
|
11688
|
+
server.
|
11689
|
+
|
11690
|
+
Available options:
|
11691
|
+
|
11692
|
+
* allow-dup-ip
|
11693
|
+
By default, HAProxy prevents IP address duplication in a backend when DNS
|
11694
|
+
resolution at runtime is in operation.
|
11695
|
+
That said, for some cases, it makes sense that two servers (in the same
|
11696
|
+
backend, being resolved by the same FQDN) have the same IP address.
|
11697
|
+
For such case, simply enable this option.
|
11698
|
+
This is the opposite of prevent-dup-ip.
|
11699
|
+
|
11700
|
+
* prevent-dup-ip
|
11701
|
+
Ensure HAProxy's default behavior is enforced on a server: prevent re-using
|
11702
|
+
an IP address already set to a server in the same backend and sharing the
|
11703
|
+
same fqdn.
|
11704
|
+
This is the opposite of allow-dup-ip.
|
11705
|
+
|
11706
|
+
Example:
|
11707
|
+
backend b_myapp
|
11708
|
+
default-server init-addr none resolvers dns
|
11709
|
+
server s1 myapp.example.com:80 check resolve-opts allow-dup-ip
|
11710
|
+
server s2 myapp.example.com:81 check resolve-opts allow-dup-ip
|
11711
|
+
|
11712
|
+
With the option allow-dup-ip set:
|
11713
|
+
* if the nameserver returns a single IP address, then both servers will use
|
11714
|
+
it
|
11715
|
+
* If the nameserver returns 2 IP addresses, then each server will pick up a
|
11716
|
+
different address
|
11717
|
+
|
11718
|
+
Default value: not set
|
11719
|
+
|
11628
11720
|
resolve-prefer <family>
|
11629
11721
|
When DNS resolution is enabled for a server and multiple IP addresses from
|
11630
11722
|
different families are returned, HAProxy will prefer using an IP address
|
@@ -11738,7 +11830,8 @@ sni <expression>
|
|
11738
11830
|
expression, though alternatives such as req.hdr(host) can also make sense. If
|
11739
11831
|
"verify required" is set (which is the recommended setting), the resulting
|
11740
11832
|
name will also be matched against the server certificate's names. See the
|
11741
|
-
"verify" directive for more details.
|
11833
|
+
"verify" directive for more details. If you want to set a SNI for health
|
11834
|
+
checks, see the "check-sni" directive for more details.
|
11742
11835
|
|
11743
11836
|
source <addr>[:<pl>[-<ph>]] [usesrc { <addr2>[:<port2>] | client | clientip } ]
|
11744
11837
|
source <addr>[:<port>] [usesrc { <addr2>[:<port2>] | hdr_ip(<hdr>[,<occ>]) } ]
|
@@ -11968,9 +12061,6 @@ accepted_payload_size <nb>
|
|
11968
12061
|
<nb> is in bytes. If not set, HAProxy announces 512. (minimal value defined
|
11969
12062
|
by RFC 6891)
|
11970
12063
|
|
11971
|
-
Note: to get bigger responses but still be sure that responses won't be
|
11972
|
-
dropped on the wire, one can choose a value between 1280 and 1410.
|
11973
|
-
|
11974
12064
|
Note: the maximum allowed value is 8192.
|
11975
12065
|
|
11976
12066
|
nameserver <id> <ip>:<port>
|
@@ -13711,10 +13801,13 @@ sets unless they require some future information. Those generally include
|
|
13711
13801
|
TCP/IP addresses and ports, as well as elements from stick-tables related to
|
13712
13802
|
the incoming connection. For retrieving a value from a sticky counters, the
|
13713
13803
|
counter number can be explicitly set as 0, 1, or 2 using the pre-defined
|
13714
|
-
"sc0_", "sc1_", or "sc2_" prefix
|
13715
|
-
|
13716
|
-
|
13717
|
-
|
13804
|
+
"sc0_", "sc1_", or "sc2_" prefix. These three pre-defined prefixes can only be
|
13805
|
+
used if MAX_SESS_STKCTR value does not exceed 3, otherwise the counter number
|
13806
|
+
can be specified as the first integer argument when using the "sc_" prefix.
|
13807
|
+
Starting from "sc_0" to "sc_N" where N is (MAX_SESS_STKCTR-1). An optional
|
13808
|
+
table may be specified with the "sc*" form, in which case the currently
|
13809
|
+
tracked key will be looked up into this alternate table instead of the table
|
13810
|
+
currently being tracked.
|
13718
13811
|
|
13719
13812
|
be_id : integer
|
13720
13813
|
Returns an integer containing the current backend's id. It can be used in
|
@@ -13729,7 +13822,12 @@ dst : ip
|
|
13729
13822
|
which is the address the client connected to. It can be useful when running
|
13730
13823
|
in transparent mode. It is of type IP and works on both IPv4 and IPv6 tables.
|
13731
13824
|
On IPv6 tables, IPv4 address is mapped to its IPv6 equivalent, according to
|
13732
|
-
RFC 4291.
|
13825
|
+
RFC 4291. When the incoming connection passed through address translation or
|
13826
|
+
redirection involving connection tracking, the original destination address
|
13827
|
+
before the redirection will be reported. On Linux systems, the source and
|
13828
|
+
destination may seldom appear reversed if the nf_conntrack_tcp_loose sysctl
|
13829
|
+
is set, because a late response may reopen a timed out connection and switch
|
13830
|
+
what is believed to be the source and the destination.
|
13733
13831
|
|
13734
13832
|
dst_conn : integer
|
13735
13833
|
Returns an integer value corresponding to the number of currently established
|
@@ -14034,7 +14132,13 @@ src : ip
|
|
14034
14132
|
behind a proxy. However if the "accept-proxy" or "accept-netscaler-cip" bind
|
14035
14133
|
directive is used, it can be the address of a client behind another
|
14036
14134
|
PROXY-protocol compatible component for all rule sets except
|
14037
|
-
"tcp-request connection" which sees the real address.
|
14135
|
+
"tcp-request connection" which sees the real address. When the incoming
|
14136
|
+
connection passed through address translation or redirection involving
|
14137
|
+
connection tracking, the original destination address before the redirection
|
14138
|
+
will be reported. On Linux systems, the source and destination may seldom
|
14139
|
+
appear reversed if the nf_conntrack_tcp_loose sysctl is set, because a late
|
14140
|
+
response may reopen a timed out connection and switch what is believed to be
|
14141
|
+
the source and the destination.
|
14038
14142
|
|
14039
14143
|
Example:
|
14040
14144
|
# add an HTTP header in requests with the originating address' country
|
@@ -14503,7 +14607,8 @@ ssl_fc_has_sni : boolean
|
|
14503
14607
|
|
14504
14608
|
ssl_fc_is_resumed : boolean
|
14505
14609
|
Returns true if the SSL/TLS session has been resumed through the use of
|
14506
|
-
SSL session cache or TLS tickets
|
14610
|
+
SSL session cache or TLS tickets on an incoming connection over an SSL/TLS
|
14611
|
+
transport layer.
|
14507
14612
|
|
14508
14613
|
ssl_fc_npn : string
|
14509
14614
|
This extracts the Next Protocol Negotiation field from an incoming connection
|
@@ -15576,7 +15681,10 @@ Detailed fields description :
|
|
15576
15681
|
- "accept_date" is the exact date when the connection was received by haproxy
|
15577
15682
|
(which might be very slightly different from the date observed on the
|
15578
15683
|
network if there was some queuing in the system's backlog). This is usually
|
15579
|
-
the same date which may appear in any upstream firewall's log.
|
15684
|
+
the same date which may appear in any upstream firewall's log. When used in
|
15685
|
+
HTTP mode, the accept_date field will be reset to the first moment the
|
15686
|
+
connection is ready to receive a new request (end of previous response for
|
15687
|
+
HTTP/1, immediately after previous request for HTTP/2).
|
15580
15688
|
|
15581
15689
|
- "frontend_name" is the name of the frontend (or listener) which received
|
15582
15690
|
and processed the connection.
|
@@ -15776,24 +15884,25 @@ Detailed fields description :
|
|
15776
15884
|
request could be received or the a bad request was received. It should
|
15777
15885
|
always be very small because a request generally fits in one single packet.
|
15778
15886
|
Large times here generally indicate network issues between the client and
|
15779
|
-
haproxy or requests being typed by hand. See
|
15887
|
+
haproxy or requests being typed by hand. See section 8.4 "Timing Events"
|
15888
|
+
for more details.
|
15780
15889
|
|
15781
15890
|
- "Tw" is the total time in milliseconds spent waiting in the various queues.
|
15782
15891
|
It can be "-1" if the connection was aborted before reaching the queue.
|
15783
|
-
See "
|
15892
|
+
See section 8.4 "Timing Events" for more details.
|
15784
15893
|
|
15785
15894
|
- "Tc" is the total time in milliseconds spent waiting for the connection to
|
15786
15895
|
establish to the final server, including retries. It can be "-1" if the
|
15787
|
-
request was aborted before a connection could be established. See
|
15788
|
-
|
15896
|
+
request was aborted before a connection could be established. See section
|
15897
|
+
8.4 "Timing Events" for more details.
|
15789
15898
|
|
15790
15899
|
- "Tr" is the total time in milliseconds spent waiting for the server to send
|
15791
15900
|
a full HTTP response, not counting data. It can be "-1" if the request was
|
15792
15901
|
aborted before a complete response could be received. It generally matches
|
15793
15902
|
the server's processing time for the request, though it may be altered by
|
15794
15903
|
the amount of data sent by the client to the server. Large times here on
|
15795
|
-
"GET" requests generally indicate an overloaded server. See
|
15796
|
-
for more details.
|
15904
|
+
"GET" requests generally indicate an overloaded server. See section 8.4
|
15905
|
+
"Timing Events" for more details.
|
15797
15906
|
|
15798
15907
|
- "Ta" is the time the request remained active in haproxy, which is the total
|
15799
15908
|
time in milliseconds elapsed between the first byte of the request was
|
@@ -15802,7 +15911,7 @@ Detailed fields description :
|
|
15802
15911
|
one exception, if "option logasap" was specified, then the time counting
|
15803
15912
|
stops at the moment the log is emitted. In this case, a '+' sign is
|
15804
15913
|
prepended before the value, indicating that the final one will be larger.
|
15805
|
-
See "
|
15914
|
+
See section 8.4 "Timing Events" for more details.
|
15806
15915
|
|
15807
15916
|
- "status_code" is the HTTP status code returned to the client. This status
|
15808
15917
|
is generally set by the server, but it might also be set by haproxy when
|
@@ -16059,7 +16168,7 @@ Please refer to the table below for currently defined variables :
|
|
16059
16168
|
| | %t | date_time (with millisecond resolution) | date |
|
16060
16169
|
| H | %tr | date_time of HTTP request | date |
|
16061
16170
|
| H | %trg | gmt_date_time of start of HTTP request | date |
|
16062
|
-
| H | %trl |
|
16171
|
+
| H | %trl | local_date_time of start of HTTP request | date |
|
16063
16172
|
| | %ts | termination_state | string |
|
16064
16173
|
| H | %tsc | termination_state with cookie status | string |
|
16065
16174
|
+---+------+-----------------------------------------------+-------------+
|
@@ -16208,16 +16317,20 @@ Timings events in TCP mode:
|
|
16208
16317
|
may indicate that the client only pre-established the connection without
|
16209
16318
|
speaking, that it is experiencing network issues preventing it from
|
16210
16319
|
completing a handshake in a reasonable time (e.g. MTU issues), or that an
|
16211
|
-
SSL handshake was very expensive to compute.
|
16320
|
+
SSL handshake was very expensive to compute. Please note that this time is
|
16321
|
+
reported only before the first request, so it is safe to average it over
|
16322
|
+
all request to calculate the amortized value. The second and subsequent
|
16323
|
+
request will always report zero here.
|
16212
16324
|
|
16213
16325
|
- Ti: is the idle time before the HTTP request (HTTP mode only). This timer
|
16214
16326
|
counts between the end of the handshakes and the first byte of the HTTP
|
16215
16327
|
request. When dealing with a second request in keep-alive mode, it starts
|
16216
|
-
to count after the end of the transmission the previous response.
|
16217
|
-
|
16218
|
-
|
16219
|
-
|
16220
|
-
|
16328
|
+
to count after the end of the transmission the previous response. When a
|
16329
|
+
multiplexed protocol such as HTTP/2 is used, it starts to count immediately
|
16330
|
+
after the previous request. Some browsers pre-establish connections to a
|
16331
|
+
server in order to reduce the latency of a future request, and keep them
|
16332
|
+
pending until they need it. This delay will be reported as the idle time. A
|
16333
|
+
value of -1 indicates that nothing was received on the connection.
|
16221
16334
|
|
16222
16335
|
- TR: total time to get the client request (HTTP mode only). It's the time
|
16223
16336
|
elapsed between the first bytes received and the moment the proxy received
|
@@ -17025,6 +17138,7 @@ The cache won't store and won't deliver objects in these cases:
|
|
17025
17138
|
|
17026
17139
|
- If the request is not a GET
|
17027
17140
|
- If the HTTP version of the request is smaller than 1.1
|
17141
|
+
- If the request contains an Authorization header
|
17028
17142
|
|
17029
17143
|
Caution!: Due to the current limitation of the filters, it is not recommended
|
17030
17144
|
to use the cache with other filters. Using them can cause undefined behavior
|
@@ -17045,7 +17159,7 @@ cache <name>
|
|
17045
17159
|
|
17046
17160
|
total-max-size <megabytes>
|
17047
17161
|
Define the size in RAM of the cache in megabytes. This size is split in
|
17048
|
-
blocks of 1kB which are used by the cache entries.
|
17162
|
+
blocks of 1kB which are used by the cache entries. Its maximum value is 4095.
|
17049
17163
|
|
17050
17164
|
max-age <seconds>
|
17051
17165
|
Define the maximum expiration duration. The expiration is set has the lowest
|
@@ -17057,13 +17171,13 @@ max-age <seconds>
|
|
17057
17171
|
10.2.2. Proxy section
|
17058
17172
|
---------------------
|
17059
17173
|
|
17060
|
-
http-request cache-use <name>
|
17174
|
+
http-request cache-use <name> [ { if | unless } <condition> ]
|
17061
17175
|
Try to deliver a cached object from the cache <name>. This directive is also
|
17062
17176
|
mandatory to store the cache as it calculates the cache hash. If you want to
|
17063
17177
|
use a condition for both storage and delivering that's a good idea to put it
|
17064
17178
|
after this one.
|
17065
17179
|
|
17066
|
-
http-response cache-store <name>
|
17180
|
+
http-response cache-store <name> [ { if | unless } <condition> ]
|
17067
17181
|
Store an http-response within the cache. The storage of the response headers
|
17068
17182
|
is done at this step, which means you can use others http-response actions
|
17069
17183
|
to modify headers before or after the storage of the response. This action
|