mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
The access-log map read $request_uri, which keeps percent-encoding and repeated slashes. A request such as /%70assword/reset/<token>, /password%2Freset/<token> or //password//reset/<token> missed the token-route expression, fell through to the plain-path branch and was logged with the token in plain text, while the backend still decoded it to its reset handler. The map now reads $uri: decoded, slash-merged (merge_slashes is not overridden anywhere) and without the query string, so the existing expressions match every spelling of a token route. Trade-off: after an internal redirect the log shows the internal URI; with the generic vhost's error_page (ws_generic.conf.j2) a 5xx line now carries /500.html instead of the client's path, with the status unchanged. Nothing in the repository parses the proxy access log. The unit test resolves the map against the variable it reads, modelling $uri as nginx builds it, and adds the three encoded spellings above. Negative control: with the map back on $request_uri, exactly those three cases fail (3 failed, 8 passed). Reported by CodeRabbit on #1322. Part of #1192 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>