Fix: la résolution DNS dynamique du nginx frontend écrasait le chemin de l'API

Avec un proxy_pass entièrement basé sur une variable, nginx ne remplace
plus le préfixe de location par le reste de l'URI comme il le fait pour
une valeur statique : toutes les requêtes /api/* étaient réécrites en
exactement /api/ (sans /auth/login, /users, etc.), d'où les 404 sur
toutes les routes. Fix : $request_uri est maintenant explicitement
ajouté au proxy_pass pour transmettre le chemin et la query string
d'origine.

Reproduit et vérifié avec un vrai nginx local + un faux backend qui
échoue le chemin reçu : le bug était bien présent avec l'ancienne
config, et absent avec la nouvelle.
This commit is contained in:
Claude committed 2026-07-06 14:49:23 +00:00
1 parent 767b7aaa3b
commit 441a1758a5
1 file changed
+8 -2
+8 -2
View File
@@ -11,8 +11,14 @@ server {
resolver 127.0.0.11 valid=30s; resolver 127.0.0.11 valid=30s;
location /api/ { location /api/ {
set $backend_upstream http://presencia-backend:4790; set $backend_upstream presencia-backend;
proxy_pass $backend_upstream/api/; # $request_uri (the raw, un-normalized original URI) must be appended
# explicitly: when the proxy_pass target is built from a variable,
# nginx does NOT replace the matched location prefix with the rest of
# the request URI like it does for a static proxy_pass value — it
# would otherwise always forward the literal "/api/" with nothing
# appended, regardless of the actual path requested.
proxy_pass http://$backend_upstream:4790$request_uri;
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;