У меня есть расположение ниже, которое находится среди большего файла conf.

В качестве справки это работает:

location = /scripts/news/admin/index.js {
       alias /my/file/path/news/scripts/admin/index.js;
}

Однако это не может подобрать регулярное выражение (в качестве теста я заставляю путь к файлу, но он все еще не используется):

location ^~ ^/scripts/([a-z]+)/([a-z]+)/([a-z]+).js$ {
        alias /my/file/path/news/scripts/admin/index.js; # for testing, use direct file location
        break; # ensuring nothing else happens, for testing
        #alias /my/file/path/$1/scripts/$2/$3.js; # actual regex
}

Я упускаю что-то явно очевидное в моем регулярном выражении? Я пытался (.*)и , ~*но ни один не делает никакой разницы. Используемый URL:

http://example.com/scripts/news/admin/index.js

В своих логах я вижу:

2015/03/21 20:43:28 [debug] 16440#0: *183689 test location: "^/scripts/(\w+)/(\w+)\.js$"
2015/03/21 20:43:28 [debug] 16440#0: *183689 test location: "/"
2015/03/21 20:43:28 [debug] 16440#0: *183689 test location: "scripts/([a-z]+)/([a-z]+)/([a-z]+).js"
2015/03/21 20:43:28 [debug] 16440#0: *183689 test location: "thirdparty"
2015/03/21 20:43:28 [debug] 16440#0: *183689 test location: "skins"
2015/03/21 20:43:28 [debug] 16440#0: *183689 test location: ~ "\.(jpg|jpeg|gif|css|png|js|ico|html)$"
2015/03/21 20:43:28 [debug] 16440#0: *183689 using configuration "\.(jpg|jpeg|gif|css|png|js|ico|html)$"

Почему третий вход не ловится и не останавливается?

answer

Я предположил, что совпадения с регулярными выражениями сначала идут наиболее конкретно, а не в порядке записи. Последнее регулярное выражение, показанное в моем журнале, соответствовало и останавливалось.