Je suis en train d'essayer d'utiliser la carte de NGINX, mais les résultats ne sont pas ceux auxquels je m'attends.
Voici ce que j'ai :
map $uri $new {
default "";
~*/cc/(?P.*)$ test.php?suffix=$suffix;
}
location ~ [a-zA-Z0-9/_]+$ {
proxy_pass http://www.domain.com:81/$new;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Quand je vais sur www.domain.com/cc/abc, voici ce que je vois dans les journaux
2012/03/29 17:27:53 [warn] 3382#0: *33 une réponse de l'amont est mise en mémoire tampon dans un fichier temporaire /var/cache/nginx/proxy_temp/5/00/0000000005 pendant la lecture de l'amont, client: 1.2.3.4, serveur: www.domain.com, requête: "GET /cc/abc HTTP/1.1", amont: "http://1270.0.0.1:81/test.php?suffix=$suffix", hôte: "www.domain.com"
Le $suffix n'est pas remplacé.
Mais quand je fais ceci :
map $uri $new {
default "";
~*/cc/(?P.*)$ $suffix;
}
location ~ [a-zA-Z0-9/_]+$ {
proxy_pass http://www.domain.com:81/$new;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Et maintenant, quand je vais sur www.domain.com/cc/abc, les journaux me montrent ceci :
2012/03/29 17:29:39 [warn] 5916#0: *26 une réponse de l'amont est mise en mémoire tampon dans un fichier temporaire /var/cache/nginx/proxy_temp/2/00/0000000002 pendant la lecture de l'amont, client: 1.2.3.4, serveur: www.domain.com, requête: "GET /cc/abc HTTP/1.1", amont: "http://1270.0.01:81/abc", hôte: "www.domain.com"
Donc, quand la réécriture contient une chaîne incluant la variable, elle n'est pas remplacée. Mais si elle contient seulement la variable, cela fonctionnera.
Qu'est-ce que je fais de mal ?