@BaJIepaMoTo6JIok

Как заблочить location with query params?

Нужно заблочить domain.ru/ajax/?paramone=one&paramtwo=two и разрешить определенным адресам

Сделал такой конфиг - не работает
location ~ /ajax {
                if ($args ~* "paramone=one") {
                return 403;
                }
                if ($args ~* "paramtwo=two") {
                return 403;
                }

                allow 1.1.1.1;
                allow 1.1.1.2;
                deny all;
        }
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
@dodo512
geo map

geo $var1 {
    default     0;
    1.1.1.1     1;
    1.1.1.2     1;
}

map $var1,$args  $var2 {
    default         0;
    0,paramone=one&paramtwo=two    1;
}

server {

    location ~ ^/ajax/ {
        if ($var2) {
            return 403;
        }

    }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
Я бы написал что-то такое:
map $check_params $resticted_params {
	default		0;
	one:two		1;
}
server {
	# ...
	location /ajax {
		set $check_params "$arg_paramone:$arg_paramtwo";
		auth_request /check_params;
		allow 1.1.1.1;
		allow 1.1.1.2;
		deny all;
		satisfy any;
		# proxy_pass или что-то что нужно
	}

	location = /check_params {
		internal;
		if ($resticted_params) {
			return 403;
		}
		return 200;
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы