try_files
Phil Kulin
schors at gmail.com
Sun Jul 29 21:49:15 UTC 2012
Добрый вечер.
Я себе сегодня голову сломал. Есть вот такой конфиг (nginx 1.2.1):
>========begin========
server {
include listen.conf; # там просто listen
server_name 1.cms.cz8.ru;
access_log off;
root /home/cms/www/site1/public_html;
index index.php;
location / {
disable_symlinks if_not_owner
from=/home/cms/www/site1/public_html;
charset utf-8;
source_charset utf-8;
log_not_found off;
try_files $uri $uri/ @apache;
access_log /home/cms/www/site1/logs/nginx-access.log;
}
location = /favicon.ico {
log_not_found off;
access_log /home/cms/www/site1/logs/nginx-access.log;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log /home/cms/www/site1/logs/nginx-access.log;
}
location ~ /\. {
deny all;
log_not_found off;
access_log off;
}
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
log_not_found off;
access_log off;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
disable_symlinks if_not_owner
from=/home/cms/www/site1/public_html;
charset utf-8;
source_charset utf-8;
expires 24h;
log_not_found off;
access_log /home/cms/www/site1/logs/nginx-access.log;
}
location ~ \.php$ {
try_files $uri =404;
proxy_pass http://127.0.0.1:13315;
}
location @apache {
proxy_pass http://127.0.0.1:13315;
}
}
>=================end==============
Загвоздка собственно в первом location / с try_files
Судя по всему, доходя до проверки $uri/ nginx проверяет на самом деле
<root>/$uri/<индекс>
Причём, в этом случае он не отдаёт при наличии там index.php его в
голом виде, а пересматривает location и идёт уже в правило location ~
\.php$ указывая новый $uri с присутствующим там index.php (посмотрел
phpinfo() что ему приходит)
Ещё забавная вещь, при смене индекса:
index index.html
он тут же начинает ругаться 403-ей ошибкой (!)
Это я пытался WordPress настроить. Т.е. ни одна из конфигураций с
документации nginx.org, wiki.nginx.org, и самих CMS для
Joomla/Wordpress не будут работать при замене fastcgi на proxy (у меня
бэкендом apache).
Но вопрос собственно в том, что я реально поведения не понимаю, не
могу формализовать, а главное - зачем он это делает?
--
Non nobis Domine non nobis sed Nomini Tuo da gloriam
Phil Kulin
Подробная информация о списке рассылки nginx-ru