From 5ae8946ccd2c8e09d292778eef41caa59eb22484 Mon Sep 17 00:00:00 2001 From: strarsis Date: Fri, 15 Mar 2024 15:38:51 +0100 Subject: [PATCH 1/4] Add `X-Cache-Enabled` HTTP header. --- roles/wordpress-setup/templates/wordpress-site.conf.j2 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/roles/wordpress-setup/templates/wordpress-site.conf.j2 b/roles/wordpress-setup/templates/wordpress-site.conf.j2 index b436c857d4..bc8f68f73c 100644 --- a/roles/wordpress-setup/templates/wordpress-site.conf.j2 +++ b/roles/wordpress-setup/templates/wordpress-site.conf.j2 @@ -1,6 +1,11 @@ # {{ ansible_managed }} -{% block server_before %}{% endblock %} +{% block server_before %} +map $upstream_cache_status $header_x_cache_enabled { + default true; + BYPASS ""; +} +{% endblock %} server { {% block server_id -%} @@ -19,6 +24,9 @@ server { index index.php index.htm index.html; add_header Fastcgi-Cache $upstream_cache_status; + # Extra header for WordPress (notably its Site Health check) + add_header X-Cache-Enabled $header_x_cache_enabled; + # Specify a charset charset utf-8; From a71c2dedabc609d20b1297eb3a7e81366ed6c958 Mon Sep 17 00:00:00 2001 From: strarsis Date: Fri, 2 Aug 2024 14:51:51 +0200 Subject: [PATCH 2/4] Add condition to add `X-Cache-Enabled` HTTP header only to loopback requests. Move `X-Cache-Enabled` HTTP header to PHP-specific `location` block. --- roles/nginx/templates/nginx.conf.j2 | 17 ++++++++++++++++- .../templates/wordpress-site.conf.j2 | 5 ++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/roles/nginx/templates/nginx.conf.j2 b/roles/nginx/templates/nginx.conf.j2 index 6b60169863..49f5b7f929 100644 --- a/roles/nginx/templates/nginx.conf.j2 +++ b/roles/nginx/templates/nginx.conf.j2 @@ -50,7 +50,22 @@ pid /run/nginx.pid; {% endblock %} http { - {% block http_begin %}{% endblock %} + {% block http_begin %} + map $upstream_cache_status $header_x_cache_enabled { + default true; + BYPASS ""; + } + + map $server_addr:$remote_addr $is_loopback_request { + "~^([^:]+):\1$" 1; + default 0; + } + + map $is_loopback_request:$header_x_cache_enabled $loopback_header_x_cache_enabled { + default ""; + 1:true true; + } + {% endblock %} {% block server_tokens -%} # Hide nginx version information. diff --git a/roles/wordpress-setup/templates/wordpress-site.conf.j2 b/roles/wordpress-setup/templates/wordpress-site.conf.j2 index 4d51660ba3..350059bcee 100644 --- a/roles/wordpress-setup/templates/wordpress-site.conf.j2 +++ b/roles/wordpress-setup/templates/wordpress-site.conf.j2 @@ -26,9 +26,6 @@ server { index index.php index.htm index.html; add_header Fastcgi-Cache $upstream_cache_status; - # Extra header for WordPress (notably its Site Health check) - add_header X-Cache-Enabled $header_x_cache_enabled; - # Specify a charset charset utf-8; @@ -247,6 +244,8 @@ server { {% block location_php_basic -%} try_files $uri /index.php; + # Additional proxy header for WordPress (notably its Site Health check) + add_header X-Cache-Enabled $loopback_header_x_cache_enabled; {% endblock -%} {% block cache_config -%} From 329db488827b8282dd1f770383d369ba0134a103 Mon Sep 17 00:00:00 2001 From: strarsis Date: Sat, 3 Aug 2024 02:42:47 +0200 Subject: [PATCH 3/4] Remove redundant map config. --- roles/wordpress-setup/templates/wordpress-site.conf.j2 | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/roles/wordpress-setup/templates/wordpress-site.conf.j2 b/roles/wordpress-setup/templates/wordpress-site.conf.j2 index 350059bcee..5548c14eb9 100644 --- a/roles/wordpress-setup/templates/wordpress-site.conf.j2 +++ b/roles/wordpress-setup/templates/wordpress-site.conf.j2 @@ -1,11 +1,6 @@ # {{ ansible_managed }} -{% block server_before %} -map $upstream_cache_status $header_x_cache_enabled { - default true; - BYPASS ""; -} -{% endblock %} +{% block server_before %}{% endblock %} server { {% block server_id -%} From 661c9a655e9849f3e31a3e4958acd4c282dc7a81 Mon Sep 17 00:00:00 2001 From: strarsis Date: Sun, 4 Aug 2024 18:08:44 +0200 Subject: [PATCH 4/4] Move `add_header` directive for `X-Cache-Enabled` to server-block to avoid clearing all `location` headers. --- roles/wordpress-setup/templates/wordpress-site.conf.j2 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/roles/wordpress-setup/templates/wordpress-site.conf.j2 b/roles/wordpress-setup/templates/wordpress-site.conf.j2 index 5548c14eb9..72b63fc0a3 100644 --- a/roles/wordpress-setup/templates/wordpress-site.conf.j2 +++ b/roles/wordpress-setup/templates/wordpress-site.conf.j2 @@ -21,6 +21,9 @@ server { index index.php index.htm index.html; add_header Fastcgi-Cache $upstream_cache_status; + # Additional proxy header for WordPress (notably its Site Health check) + add_header X-Cache-Enabled $loopback_header_x_cache_enabled; + # Specify a charset charset utf-8; @@ -239,8 +242,6 @@ server { {% block location_php_basic -%} try_files $uri /index.php; - # Additional proxy header for WordPress (notably its Site Health check) - add_header X-Cache-Enabled $loopback_header_x_cache_enabled; {% endblock -%} {% block cache_config -%}