diff --git a/mods/sample-nginx-reverse-proxy.config b/mods/sample-nginx-reverse-proxy.config index afc74dfc4a..e5faa64034 100644 --- a/mods/sample-nginx-reverse-proxy.config +++ b/mods/sample-nginx-reverse-proxy.config @@ -15,6 +15,25 @@ # ----- ... + +## +# by https://syshero.org/2018-04-13-nginx-unique-request-identifier/ +# if X-Request-ID is set, NGINX will forward the same value to the next upstream +# if the header is not set, NGINX will generate a random request identifier and add it to the request. +# +# To guarantee backward compatibility, map to format the $request_id variable to a format that matches any old setups. +## + +map $request_id $formatted_id { + "~*(?[0-9a-f]{8})(?[0-9a-f]{4})(?[0-9a-f]{4})(?[0-9a-f]{4})(?.*)$" "${p1}-${p2}-${p3}-${p4}-${p5}"; +} + +map $http_x_request_id $uuid { + default "${request_id}"; + ~* "${http_x_request_id}"; +} + + server { ... @@ -30,6 +49,7 @@ server { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Forwarded "for=$proxy_add_x_forwarded_for; proto=$scheme"; + proxy_set_header X-Request-ID $uuid; } ... diff --git a/mods/sample-nginx.config b/mods/sample-nginx.config index 5530bfaefd..88edf19162 100644 --- a/mods/sample-nginx.config +++ b/mods/sample-nginx.config @@ -20,6 +20,24 @@ # http://wiki.nginx.org/Configuration ## +## +# by https://syshero.org/2018-04-13-nginx-unique-request-identifier/ +# if X-Request-ID is set, NGINX will forward the same value to the next upstream +# if the header is not set, NGINX will generate a random request identifier and add it to the request. +# +# To guarantee backward compatibility, map to format the $request_id variable to a format that matches any old setups. +## + +map $request_id $formatted_id { + "~*(?[0-9a-f]{8})(?[0-9a-f]{4})(?[0-9a-f]{4})(?[0-9a-f]{4})(?.*)$" "${p1}-${p2}-${p3}-${p4}-${p5}"; +} + +map $http_x_request_id $uuid { + default "${request_id}"; + ~* "${http_x_request_id}"; +} + + ## # This configuration assumes your domain is example.net # You have a separate subdomain friendica.example.net @@ -80,6 +98,9 @@ server { client_max_body_size 20m; client_body_buffer_size 128k; + # add the request id header to show it in the HTTP header output + add_header X-Request-ID $uuid; + # rewrite to front controller as default rule location / { try_files $uri /index.php?pagename=$uri&$args; @@ -125,6 +146,7 @@ server { include fastcgi_params; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTP_X_REQUEST_ID $uuid; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k;