alias влияет только на $request_filename и $document_root? а как быть с другими переменными?

Volodymyr Kostyrko c.kworr на gmail.com
Вт Июн 12 09:07:07 UTC 2012


День добрый.

Есть глупый вопрос. При использовании alias $request_filename и 
$document_root корректно трансформируются, а $fastcgi_script_name, $uri, 
$document_uri полностью игнорируют изменение пути в запросе.

Ну например:

location /subsite {
  alias /home/user/project1;

   location ~ .*\.php$ {
     try_files $uri =404;
     include /usr/local/etc/nginx/fastcgi_params;
     fastcgi_pass unix:/usr/local/www/.fastcgi.php.socket;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
  }
}

Первая ошибка в данном блоке выползет на try_files, поскольку $uri 
(например - '/subsite/index.php') не оттранслирован и файла такого в 
/home/user/project1 нет. Хотя по логике вещей после отработки alias мы 
уже должны работать с /home/user/project1/index.php, но это изменение 
затрагивает исключительно $request_filename.

Исправить положение можно если убрать try_files (нежелательно) и ставить 
в SCRIPT_FILENAME $request_filename (не знаю на сколько это 
идеологически правильно).

Единственный способ обхода - использовать вместо alias root и обозвать 
папку с проэктом так же как и локейшн. Но это больше похоже на костыли. 
Есьт ли другие способы решения проблемы?

-- 
Sphinx of black quartz judge my vow.



Подробная информация о списке рассылки nginx-ru