Question Caractères regex nginx nécessitant des guillemets?


Donc, je configurais nginx aujourd'hui et j'ai rencontré un problème étrange. J'essayais de faire correspondre un endroit comme celui-ci:

location ~ ^/([0-9]+)/(.*) {
    # do proxy redirects
}

... pour les URL comme "http://my.domain.com/0001/index.html".

Cette règle n'a jamais correspondu, malgré le fait que cela devrait être le cas. Il m'a fallu un certain temps pour comprendre, basé sur cette documentation, que certains caractères dans les expressions rationnelles doivent être cités. Le problème est que la documentation est destinée aux réécritures et qu'elle appelle spécifiquement des accolades, pas des crochets. Après de nombreuses expérimentations impliquant beaucoup de jurons, j'ai découvert que je pouvais résoudre le problème en citant la regex comme ceci:

location ~ "^/([0-9]+)/(.*)" {
    # do proxy redirects
}

Existe-t-il une liste de caractères que nginx exige de citer avec des expressions rationnelles? Ou pourrait-il y avoir quelque chose d'autre qui me manque totalement? C’est mon premier travail de configuration nginx, il est donc fort possible que j’ai mal compris quelque chose ...


6
2017-10-07 17:15


origine


Essayer avec ^/(\d+)/(.*) pour confirmer si ce sont les crochets ou non. - Shane Madden♦
Cela expliquerait beaucoup de confusion :) - tommics
Si quelqu'un rencontre cette question, voici la question connexe possible ... serverfault.com/a/793557 - Pothi Kalimuthu


Réponses:


Avez-vous besoin du numéro? Je voudrais d'abord essayer une variante plus simple et voir si l'erreur est peut-être autre chose.

J'essaierais si ^ / [0-9] + /, ou avez-vous besoin des éléments capturés?


0
2017-10-08 04:28