<div dir="ltr">Здравствуйте.<div><br></div><div>Есть следующая структура</div><div><br></div><div>server {</div><div><br></div><div>location = /a.php {</div><div> try_files @allow @allow;</div><div>}</div><div>location = /b.php </div><div> try_files @allow @allow;<br></div><div>}</div><div>location @allow {</div><div> some_checks;</div><div> proxy_pass <a href="https://127.0.0.1:8080">https://127.0.0.1:8080</a>;</div><div>}</div><div><br></div><div>И вроде бы работает.</div><div><br></div><div>Но я хочу сделать фильтр для доступа к a.php и к b.php.</div><div>И делать это в рамках a.php и b.php.</div><div>Для этого я делаю две map, примерно следующего содержания:</div><div><br></div><div>map $remote_addr_a $loc_a {</div><div> default 0;</div><div> 1.1.1.1 1;</div><div>}</div><div>map $remote_addr_b $loc_b {</div><div> default 0;</div><div> 2.2.2.2 1;</div><div>}</div><div>map $remote_addr $all {</div><div> default 0;</div><div> 3.3.3.3 1;</div><div>}</div><div><br></div><div>Что я тут хочу. Чтобы адрес 1.1.1.1 имел доступ только k a.php, 2.2.2.2 к b.php. А по переменной $all куда угодно.</div><div><br></div><div>Дальше я добавляю в location a следующие вещи:</div><div>location a {</div><div> set $remote_addr_a $remote_addr;</div><div> set $grant 0;</div><div><br></div><div> if ($loc_a) {</div><div> set $grant 1;</div><div> }</div><div>if ($all) {</div><div> set $grant 1;</div><div> }</div><div>if ($grant = 0) {</div><div> error_page 404 = @deny;</div><div>}</div><div>try_files @allow @allow;</div><div>}</div><div><br></div><div>Тут происходит следующее. Переменные у меня заполняются предсказуемо. Но только в том случае, если до try_files встречается один if. Если два, то возвращается 404 и a.php ищется на диске, то есть не происходит перенаправления в @allow. </div><div>То есть, вот так оно работает:</div><div><br></div><div><div>location a {</div><div> set $remote_addr_a $remote_addr;</div><div><br></div><div> if ($loc_a = 0) {</div><div> error_page 404 = @deny;<br></div><div>}</div><div>try_files @allow @allow;</div><div>}</div></div><div><br></div><div>Собственно, хочется понять, почему так происходит и как сделать то, что мне хочется.</div><div><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div>Best regards,</div>Anton Kiryushkin<br> </div>
</div></div>