diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml
index 08a66f70b..34b90732b 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml
@@ -192,6 +192,17 @@
text
+
+
+ header
+
+
+
+ action.http_request_set_path
+
+ text
+
+
header
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml
index f72f8bd51..51589ca54 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml
@@ -77,6 +77,34 @@
checkbox
+
+ backend.checkInterval
+
+ text
+
+ true
+
+
+ backend.checkDownInterval
+
+ text
+
+ true
+
+
+ backend.healthCheckFall
+
+ text
+
+ true
+
+
+ backend.healthCheckRise
+
+ text
+
+ true
+
header
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml
index 3693db33c..cd7d458fc 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml
@@ -200,7 +200,7 @@
header
-
+
frontend.forwardFor
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogHealthcheck.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogHealthcheck.xml
index 1fb2beee5..2c1e8e200 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogHealthcheck.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogHealthcheck.xml
@@ -21,7 +21,7 @@
healthcheck.interval
text
-
+
healthcheck.checkport
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml
index a96adc5f2..abaea38ab 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml
@@ -77,7 +77,7 @@
server.checkInterval
text
-
+
true
diff --git a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
index 4a3e48460..f48700e17 100644
--- a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
+++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
@@ -664,6 +664,28 @@
0
N
+
+ /^([0-9]{1,8}(?:us|ms|s|m|h|d)?)/u
+ Should be a number between 1 and 8 characters, optionally followed by either "d", "h", "m", "s", "ms" or "us".
+ N
+
+
+ /^([0-9]{1,8}(?:us|ms|s|m|h|d)?)/u
+ Should be a number between 1 and 8 characters, optionally followed by either "d", "h", "m", "s", "ms" or "us".
+ N
+
+
+ 1
+ 100
+ Please specify a value between 1 and 100.
+ N
+
+
+ 1
+ 100
+ Please specify a value between 1 and 100.
+ N
+
N
sourceipv4
@@ -1520,6 +1542,7 @@
http-request header delete
http-request header replace
http-request header replace value
+ http-request set-path
http-response allow
http-response deny
http-response lua script
@@ -1619,6 +1642,10 @@
/^.{1,4096}$/u
N
+
+ /^.{1,4096}$/u
+ N
+
/^.{1,4096}$/u
N
diff --git a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
index c3392cfa6..da72c7a5a 100644
--- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
+++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
@@ -374,6 +374,13 @@
{% set action_enabled = '0' %}
# ERROR: missing parameters
{% endif %}
+{% elif action_data.type == 'http-request_set-path' %}
+{% if action_data.http_request_set_path|default("") != "" %}
+{% do action_options.append('http-request set-path ' ~ action_data.http_request_set_path) %}
+{% else %}
+{% set action_enabled = '0' %}
+ # ERROR: missing parameters
+{% endif %}
{% elif action_data.type == 'http-response_allow' %}
{% do action_options.append('http-response allow') %}
{% elif action_data.type == 'http-response_deny' %}
@@ -1002,16 +1009,29 @@ backend {{backend.name}}
{# # check if health check is enabled #}
{% if healthcheck_enabled == '1' %}
{% do server_options.append('check') %}
-{# # server settings take precedence over healthcheck settings #}
-{% if server_data.checkInterval|default("") != "" %}
+{# # This can be configured in multiple places. #}
+{# # Priority for which value is used: backend > server > health check #}
+{% if backend.checkInterval|default("") != "" %}
+{% do server_options.append('inter ' ~ backend.checkInterval) %}
+{% elif server_data.checkInterval|default("") != "" %}
{% do server_options.append('inter ' ~ server_data.checkInterval) %}
{% elif healthcheck_data.interval|default("") != "" %}
{% do server_options.append('inter ' ~ healthcheck_data.interval) %}
{% endif %}
{# # use a different interval when server is in DOWN state #}
-{% if server_data.checkDownInterval|default("") != "" %}
+{% if backend.checkDownInterval|default("") != "" %}
+{% do server_options.append('downinter ' ~ backend.checkDownInterval) %}
+{% elif server_data.checkDownInterval|default("") != "" %}
{% do server_options.append('downinter ' ~ server_data.checkDownInterval) %}
{% endif %}
+{# # unhealthy threshold #}
+{% if backend.healthCheckFall|default("") != "" %}
+{% do server_options.append('fall ' ~ backend.healthCheckFall) %}
+{% endif %}
+{# # healthy threshold #}
+{% if backend.healthCheckRise|default("") != "" %}
+{% do server_options.append('rise ' ~ backend.healthCheckRise) %}
+{% endif %}
{# # use a different port for health check #}
{% if healthcheck_data.checkport|default("") != "" %}
{# # prefer port from health check template #}