проблемы rewrite + secure link, экранизация символа ? (вопроса)
zerko
nginx-forum на forum.nginx.org
Чт Июл 5 21:22:20 UTC 2018
Здравствуйте форумчане, целый день провозился с проблемой, помогите
пожалуйста, буду признателен!
nginx version: nginx/1.14.0
стоит реврайт:
rewrite
^/sec/(.*)/(\d+)/((film|serial)/(.*))$ /stream/$3?md5=$1&expires=$2 last;
и есть этот локейшен:
location /stream {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr secret";
if ($secure_link = "") {
return 200 "$query_string $arg_md5 $uri $secure_link_expires $uri
$remote_addr secret";
}
if ($secure_link = "0") {
return 410;
}
rewrite ^/stream/(.*)$ /content/vod/$1 break;
}
и запросы не приходят в локейшен /stream (Почему? я пологаю что не
передаются hash и expires, но даже без них должен обрабатываться запрос?),
стоит только добавить в регулярное вырожение экранирование \? (rewrite
^/sec/(.*)/(\d+)/((film|serial)/(.*))$
/stream/$3\?md5=$1&expires=$2 last;) - так все работает. НО! в переменную $3
добавляется этот слэш - "\", и расшифровка не происходит.. Что делать?
Интересно что даже без ЧПУ ссылок, ввида:
/stream/film/rampage.2018.720p/hls/720/index.m3u8?md5=sC-pYJ0gHU5PjJDi-18BOQ&expires=1530842792
запрос не работает тоже, в локейшен не попадает, добавляю \ перед ?
(вопросов) и все опять работает!!!
Надеюсь на вашу помощь. На другом сервере, на старой версии подобные
реврайты работают.
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,280425,280425#msg-280425
Подробная информация о списке рассылки nginx-ru