2 votes

nginx : redirection vers un emplacement nommé à l'intérieur du bloc if

J'ai un emplacement dans nginx où les requêtes GET et POST doivent aller à des emplacements nommés différents. Mais ce code ne fonctionne pas :

if ( $request_method = GET ) {
try_files /NON-EXISTENT @named_location_get
}

if ( $request_method = POST ) {
try_files /NON-EXISTENT @named_location_post
}

Parce que try_files n'est pas autorisé à l'intérieur if .

Existe-t-il un autre moyen de rediriger la demande vers un emplacement nommé, qui fonctionnerait à l'intérieur. if ?

5voto

HugoFS Points 313

Je ne sais pas où cela est documenté, mais j'ai vu des configurations où une variable est utilisée à la suite de l'instruction @ pour rendre le symbole nommé location conditionnel.

Utilisez-le avec un map et vous pouvez éliminer le bloc if blocs.

J'ai testé cet exemple :

map $request_method $name {
    GET      named_location_get;
    POST     named_location_post;
    default  named_location_other;
}
server {
    ...
    location ... {
        try_files nonexistent @$name;
    }
    location @named_location_get {
        ...
    }
    ...
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X