location Nginx

D
На сайте с 28.06.2008
Offline
1101
832

Нужно прописать логику работы для урлов в которых есть ID

пробую так

location ~ /id=\d.+$ {

и так

location ~ ^/id=\d.+$ {

и так

location ~ ^id=\d.+$ {

не прокатывает. Где ошибка?

цеплять нужно урлы вида:

/index.php?option=BLABLABLA&format=raw&id=ТУТЦИФРЫ

IL
На сайте с 20.04.2007
Offline
435
#1


location .... {
if ($args ~ "id=(\d+)") {
...
}
}
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
D
На сайте с 28.06.2008
Offline
1101
#2

Я хочу для этих урлов ограничить скорость, вроде как нельзя в иф это пихать?

Skom
На сайте с 02.12.2006
Offline
166
#3

Nginx так в лоб не умеет.

URI не есть Location и регекспы в аргументах тут не работают.

Тут надо курить в сторону map

Кстати, даже если бы регекспы и работали бы, все три примера в первом посте с ошибками.

location ~ /id=\d.+$ - Будет искать в строке именно "/id=....", а у вас перед ним &

location ~ ^/id=\d.+$ - То же самое, но с начала строки (^ - начало строки, $ - её конец)

location ~ ^id=\d.+$ { - По аналогии со вторым вариантом.

Cras amet qui numquam amavit quique amavit cras amet
D
На сайте с 28.06.2008
Offline
1101
#4

Все же получилось сделать отдельный лимит для нужной группы урлов, вот решение

map "$whitelist:$request_uri" $limitPHP {
default "";
~*0:.*(com_firm&view=price).* $binary_remote_addr;
}
limit_req_zone $limitPHP zone=vsephp:20m rate=5r/m;

+ в конфиге конкретного сайта

location ~ \.php$ {
limit_req zone=vsephp burst=2 nodelay;

$whitelist у меня это ip подсетей поисковый ботов, можете это убрать...

Андрей
На сайте с 30.09.2009
Offline
482
#5
Dram:
Я хочу для этих урлов ограничить скорость, вроде как нельзя в иф это пихать?

Syntax: limit_rate rate;

Default:

limit_rate 0;

Context: http, server, location, if in location

EuroHoster.org ( https://eurohoster.org/ru/ ) - территория быстрых серверов. Выделенные серверы, VPS, SSL, домены и VPN.
D
На сайте с 28.06.2008
Offline
1101
#6

WapGraf, фиг знает, я пробовал, мне nginx -t ругался

Андрей
На сайте с 30.09.2009
Offline
482
#7

Dram, явно что-то не так делаете.

D
На сайте с 28.06.2008
Offline
1101
#8

WapGraf, limit_rate ограничивает скорость, а мне нужно было ограничить кол-во соединений limit_req_zone

Андрей
На сайте с 30.09.2009
Offline
482
#9

Dram, извиняюсь.

А как вам такое решение?

https://screenpast.com/20190830_YUfqYjAm.png

D
На сайте с 28.06.2008
Offline
1101
#10

Ну да, тут только через map, по другому никак. Я через map в итоге и сделал...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий