<div dir="ltr">я бы предложил вот такой вариант<div><br></div><div><div> location / {</div><div> if ($query_string ~ <a href="http://site.ru/Mydll.dll?al=5f4ff3cb6478424481d6dfdf9d9a3696" target="_blank" style="font-size:12.8000001907349px">al=5f4ff3cb6478424481d6dfdf9d9a3696</a>) {</div><div> return 418;</div><div> }</div><div> error_page 418 = @nameloc;</div><div> deny all;</div><div> }</div><div><br></div><div> location @nameloc{</div><div> internal;</div><div> proxy_pass <a href="http://other_serv">http://other_serv</a>;</div><div> }</div></div><div><br></div><div>Соответственно все что не <a href="http://site.ru/Mydll.dll?al=5f4ff3cb6478424481d6dfdf9d9a3696" target="_blank" style="font-size:12.8000001907349px">al=5f4ff3cb6478424481d6dfdf9d9a3696</a> будет выдавать ошибку 403, то что <a href="http://site.ru/Mydll.dll?al=5f4ff3cb6478424481d6dfdf9d9a3696" target="_blank" style="font-size:12.8000001907349px">al=5f4ff3cb6478424481d6dfdf9d9a3696</a> будет проксироваться на другой сервер</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">1 апреля 2015 г., 20:28 пользователь Daniel Podolsky <span dir="ltr"><<a href="mailto:onokonem@gmail.com" target="_blank">onokonem@gmail.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Для начала - query string не проверяется при поиске location<div><br></div><div>Надо делать именованный, проверять аргумент в if и переходить в именованный. В этом виде if - не evil <div><div class="h5"><span></span><br><br>On Wednesday, April 1, 2015, s.ivanov <<a href="mailto:nginx-forum@nginx.us" target="_blank">nginx-forum@nginx.us</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Необходимо сделать проксирование запросов вида<br>
<a href="http://site.ru/Mydll.dll?al=5f4ff3cb6478424481d6dfdf9d9a3696" target="_blank">http://site.ru/Mydll.dll?al=5f4ff3cb6478424481d6dfdf9d9a3696</a> на другой<br>
веб-сервер.При этом проксировать нужно только запросы указанного вида, любые<br>
другие в том числе и <a href="http://site.ru/Mydll.dll" target="_blank">http://site.ru/Mydll.dll</a> должны быть запрещены.<br>
<br>
1.так<br>
location ~* ^/Mydll.dll(.*) {<br>
proxy_pass <a href="http://192.168.0.2:3000/$1$is_args$args" target="_blank">http://192.168.0.2:3000/$1$is_args$args</a>;<br>
}<br>
срабатывает на любые запросы.<br>
<br>
2. так<br>
location ~* ^/Mydll.dll$ {<br>
deny all;<br>
}<br>
<br>
location ~* ^/Mydll.dll(.*) {<br>
proxy_pass <a href="http://192.168.0.2:3000/$1$is_args$args" target="_blank">http://192.168.0.2:3000/$1$is_args$args</a>;<br>
}<br>
Запрещено всё вообще, не редиректит разрешённые запросы.<br>
<br>
3. так<br>
location = /Mydll.dll\?al=(.*) {<br>
proxy_pass <a href="http://192.168.0.2:3000/$1$is_args$args" target="_blank">http://192.168.0.2:3000/$1$is_args$args</a>;<br>
}<br>
тоже не работает - правило не срабатывает.<br>
<br>
Вопрос: как составить регулярное выражение, чтобы правило в location<br>
срабатывало только на URL разрешённого вида?<br>
Спасибо.<br>
<br>
Posted at Nginx Forum: <a href="http://forum.nginx.org/read.php?21,257789,257789#msg-257789" target="_blank">http://forum.nginx.org/read.php?21,257789,257789#msg-257789</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a>nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div></div></div>
<br>_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br></blockquote></div><br></div>