1
0
mirror of https://github.com/thib8956/nginx-proxy synced 2025-02-24 01:38:15 +00:00

feat: protection against too long debug response

This commit is contained in:
Nicolas Duchon 2024-10-17 09:08:27 +02:00
parent 7dafac8b87
commit 32ad9b7102
2 changed files with 11 additions and 1 deletions

View File

@ -1094,7 +1094,7 @@ curl -s -H "Host: test.nginx-proxy.tld" localhost/nginx-proxy-debug | jq
} }
``` ```
:warning: please be aware that the debug endpoint work by rendering the response straight to the nginx configuration, which might result in an unparseable configuration if it exceeds nginx line character limit. Only activate it when needed. :warning: please be aware that the debug endpoint work by rendering the JSON response straight to the nginx configuration in plaintext. nginx has an upper limit on the size of the configuration files it can parse, so only activate it when needed, and preferably on a per container basis if your setup has a large number of virtual hosts.
⬆️ [back to table of contents](#table-of-contents) ⬆️ [back to table of contents](#table-of-contents)

View File

@ -383,6 +383,16 @@ upstream {{ $vpath.upstream }} {
"vhost" $debug_vhost "vhost" $debug_vhost
}} }}
{{- /*
* The maximum line length in an nginx config is 4096 characters.
* If we're nearing this limit (with headroom for the rest
* of the directive), strip vhost.paths from the response.
*/}}
{{- if gt (toJson $debug_response | len) 4000 }}
{{- $_ := unset $debug_vhost "paths" }}
{{- $_ := set $debug_response "warning" "Virtual paths configuration for this hostname is too large and has been stripped from response." }}
{{- end }}
location /nginx-proxy-debug { location /nginx-proxy-debug {
default_type application/json; default_type application/json;
return 200 '{{ toJson $debug_response }}'; return 200 '{{ toJson $debug_response }}';