Welcome! Log In Create A New Profile

Advanced

Логика обработки опций в location

Anton Kiryushkin
March 18, 2015 11:28AM
Здравствуйте.

Есть следующая структура

server {

location = /a.php {
try_files @allow @allow;
}
location = /b.php
try_files @allow @allow;
}
location @allow {
some_checks;
proxy_pass https://127.0.0.1:8080;
}

И вроде бы работает.

Но я хочу сделать фильтр для доступа к a.php и к b.php.
И делать это в рамках a.php и b.php.
Для этого я делаю две map, примерно следующего содержания:

map $remote_addr_a $loc_a {
default 0;
1.1.1.1 1;
}
map $remote_addr_b $loc_b {
default 0;
2.2.2.2 1;
}
map $remote_addr $all {
default 0;
3.3.3.3 1;
}

Что я тут хочу. Чтобы адрес 1.1.1.1 имел доступ только k a.php, 2.2.2.2 к
b.php. А по переменной $all куда угодно.

Дальше я добавляю в location a следующие вещи:
location a {
set $remote_addr_a $remote_addr;
set $grant 0;

if ($loc_a) {
set $grant 1;
}
if ($all) {
set $grant 1;
}
if ($grant = 0) {
error_page 404 = @deny;
}
try_files @allow @allow;
}

Тут происходит следующее. Переменные у меня заполняются предсказуемо. Но
только в том случае, если до try_files встречается один if. Если два, то
возвращается 404 и a.php ищется на диске, то есть не происходит
перенаправления в @allow.
То есть, вот так оно работает:

location a {
set $remote_addr_a $remote_addr;

if ($loc_a = 0) {
error_page 404 = @deny;
}
try_files @allow @allow;
}

Собственно, хочется понять, почему так происходит и как сделать то, что мне
хочется.


--
Best regards,
Anton Kiryushkin
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Логика обработки опций в location

Anton Kiryushkin March 18, 2015 11:28AM

Re: Логика обработки опций в location

Maxim Dounin March 18, 2015 11:38AM

Re: Логика обработки опций в location

Gena Makhomed March 18, 2015 11:46AM

Re: Логика обработки опций в location

Anton Kiryushkin March 18, 2015 12:22PM

Re: Логика обработки опций в location

Gena Makhomed March 18, 2015 12:28PM

Re: Логика обработки опций в location

Anton Kiryushkin March 18, 2015 03:48PM

Re: Логика обработки опций в location

Maxim Dounin March 18, 2015 08:18PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 149
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready