LINUX.ORG.RU

Странности nginx

 ,


0

1

С таким конфигом сервер выдает всегда 404, когда запрос по http идет. Если https использутся то норм

location / {

  if ($scheme = "http") {

  }

  try_files $uri $uri/ @php;
}


С этим конфигом нормально
location / {
  try_files $uri $uri/ @php;
}


Т.е. если if(true) то выдает 404. В IF можно подставлять любую проверку, главное чтобы было TRUE, даже если $uri = «/» будет, то сервер опять же выдает 404. Ничего не понимаю, почему он не доходит до try_files, а попадает в IF(){} и там как я понял затыкается

★★★

if в nginx работает через жопу (гугли if is evil). В данном случае подозреваю что проблема в отсутствии в блоке if try_files, видимо оно не наследуется из вышележащего блока

MrClon ★★★★★ ()
Ответ на: комментарий от deep-purple

Хочу тупо редиректить на https, если файл не существует физически и если URL НЕ /auth

if ($scheme = "http") {
   set $https_redirect  "redir";
}


if ($uri = "/auth") {
   set $https_redirect  "xuy";
}

if (-e $request_filename){
   set $https_redirect  "xuy";
}

if ($https_redirect = "redir") {
   rewrite ^ https://$host$uri permanent;
}
try_files $uri $uri/ @php;

gobot ★★★ ()
Ответ на: комментарий от gobot

Не стоит пытаться делать такое через if. if в nginx это не не тот няшный if к которому ты привык, if в nginx это хтоническое нечто. Попробуй приспособить к этому map

P.S. а чего бы не редиректить на https вообще всё?

MrClon ★★★★★ ()
Ответ на: комментарий от MrClon

А конфиг домена дублировать со всеми потрохами? Вот был б в нгикс наследование или шаблоны виртхостов другое дело. А вообще там у меня пару урл, которые должны быть доступны по http

gobot ★★★ ()