est-il possible de faire quelque chose comme ça avec nginx?
if ( $http_user_agent = "wget" ){
server {
listen 11.11.11.11:1111;
root /website1/;
server_name example.com www.example.com;
else
server {
listen 22.22.22.22:22222;
root /website2/;
server_name example2.com www.example2.com;
}
Le module de réécriture Nginx a directive if
(voir la documentation liée pour des exemples), mais pas else
. L'équivalent pour else
serait tout ce qui n'est pas modifié avec un if
.
Vous pouvez utiliser if
dans un server { }
mais pas l'inverse. Vous n'auriez même pas la condition comparée dans votre si avant une demande qui a déjà besoin du serveur. Là, vous ne pouvez diffuser du contenu que lorsque l'agent utilisateur est (ou n'est pas) wget
.
Notez également que vous ne devez pas utiliser if
dans location
car cela peut ne pas fonctionner comme vous le souhaitez (voir If Is Evil ).
Dans la forme donnée, cela ne fonctionnera pas: le test de l'agent utilisateur HTTP implique que la demande a déjà été reçue. Cela n'est possible que si un bloc server
a déjà été défini. Voulez-vous vraiment démarrer de nouveaux serveurs en fonction de la chaîne User-Agent d'une demande que vous avez reçue ailleurs?
Si vous souhaitez simplement diffuser un contenu différent, rediriger vers différents chemins, etc., selon les parties de la demande comme l'agent utilisateur, cela est possible, par exemple avec http://nginx.org/en/docs/http/ngx_http_rewrite_module.html