nginx « Nginx, порядок обработки location

Есть конфиг nginx

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .ini.geshi_code {font-family:monospace;} .ini.geshi_code .imp {font-weight: bold; color: red;} .ini.geshi_code .co0 {color: #666666; font-style: italic;} .ini.geshi_code .sy0 {color: #000066; font-weight:bold;} .ini.geshi_code .st0 {color: #933;} .ini.geshi_code .re0 {color: #000066; font-weight:bold;} .ini.geshi_code .re1 {color: #000099;} .ini.geshi_code .re2 {color: #660066;} .ini.geshi_code span.xtra { display:block; }


server {
 listen   192.168.100.1:80;
#===============================
           location ^~ /err[0-9] {
                return 404;
        }
#===============================
        location / {
                proxy_pass http://127.0.0.1:80;
        }
#===============================
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
 

На порту 127.0.0.1:80 слушает апач.

При запросе вида
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .ini.geshi_code {font-family:monospace;} .ini.geshi_code .imp {font-weight: bold; color: red;} .ini.geshi_code .co0 {color: #666666; font-style: italic;} .ini.geshi_code .sy0 {color: #000066; font-weight:bold;} .ini.geshi_code .st0 {color: #933;} .ini.geshi_code .re0 {color: #000066; font-weight:bold;} .ini.geshi_code .re1 {color: #000099;} .ini.geshi_code .re2 {color: #660066;} .ini.geshi_code span.xtra { display:block; }

http://192.168.100.1/err1
 

ошибка о 404 приходит с апача

Если исправить конфиг локейшна с еррором, так, чтобы он не использовал регулярных выражений
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .ini.geshi_code {font-family:monospace;} .ini.geshi_code .imp {font-weight: bold; color: red;} .ini.geshi_code .co0 {color: #666666; font-style: italic;} .ini.geshi_code .sy0 {color: #000066; font-weight:bold;} .ini.geshi_code .st0 {color: #933;} .ini.geshi_code .re0 {color: #000066; font-weight:bold;} .ini.geshi_code .re1 {color: #000099;} .ini.geshi_code .re2 {color: #660066;} .ini.geshi_code span.xtra { display:block; }

           location /err {
                return 404;
        }
 

То 404 выдается прекрасно Nginx.

Почему так происходит?

1 ответов


Была ошибка в конфиге.
Поиск по регулярным выражениям настраивается так


       location ~ /err[0-9] {
                return 404;
        }
 
Тогда запросы вида

http://192.168.100.1/err1
http://192.168.100.1/err2
и т.д.
 обрабатываются прекрасно