1) Всем доброго времени суток.
Сразу к делу.
Есть сайт с Joomla.
На сайте используются как "типа" ЧПУ:
http://xxxx.ru/index.php/20101111656/cat1/file.html
так и прямые линки:
http://xxxx.ru/index.php?option=com_kinoarhiv&Itemid=34
Нужно перенести его с Apache на Nginx+PHP-FPM.
Конфиг примерно вот такой:
[code]
root /srv/www/xxxx/htdocs/;
location / {
index index.php index.html index.htm;
}
location ~* (/|\.html?|\.feed|\.pdf|\.raw|/[^.]*)$ {
try_files $uri $uri/ @joomla;
}
# php-fastcgi
location ~ \.php$ {
try_files $uri @joomla;
proxy_buffering off;
fastcgi_pass unix:/var/run/php-fpm/default.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/xxxx/htdocs/index.php;
fastcgi_param QUERY_STRING $query_string;
fastcgi_temp_path /spool/nginx/fastcgi_temp 1 2;
include fastcgi_params;
}
location @joomla {
fastcgi_pass unix:/var/run/php-fpm/default.socket;
fastcgi_pass unix:/var/run/php-fpm/default.socket;
fastcgi_param SCRIPT_FILENAME /srv/www/xxxx/htdocs/index.php;
fastcgi_param QUERY_STRING $query_string;
include fastcgi_params;
}
location ~* \.(jpg|gif|png|css|js|ico)$ {
access_log off;
expires 30d;
}
location /403.html
{
root /srv/ftp/www/;
}
}
[/code]
Проблема следующая:
/ открывается отлично.
"ЧПУ"-адреса открываются тоже отлично.
а вот прямые адреса - Joomla выплевывает ошибку, мол, нет доступа, или неправильный модуль.
В логах ничего подозрительного нет.
Такое впечатление, что реврайт неправильно срабатывает именно тогда, когда идет запрос на реально существующий URL (т.е. php-файл), но в чем именно здесь может быть ошибка - в упор не пойму.
Кто-нить с таким сталкивался? В какую сторону копать, что еще проверить?
2) Вторая проблема - есть сайт с галереей 4images.
Задача та же.
Никаких ЧПУ нет, поэтому конфиг до банального прост:
[code]
location / {
root /srv/www/aaaa/htdocs/;
index index.php;
}
# php-fastcgi
location ~ \.php$ {
proxy_buffering off;
fastcgi_pass unix:/var/run/php-fpm/default.socket;
fastcgi_intercept_errors on;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/aaaa/htdocs/$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_temp_path /spool/nginx/fastcgi_temp 1 2;
include fastcgi_params;
}
location ~* \.(jpg|gif|png|css|js)$ {
root /srv/www/aaaa/htdocs/;
access_log off;
expires 30d;
}
[/code]
Все бы замечательно, НО.
В скрипте 4images при некоторых действиях делается несколько HTTP 302 redirect с одной страницы на другую.
При работе на Apache все работает замечательно, при работе с Nginx - редирект "зацикливается", и после долгого ожидания браузер пишет, что получает бесконечное перенаправление со страницы на ее саму же.
Причем детальный анализ HTTP-ответов сервера и PHP-кода движка так и не помог разобраться, из-за чего такая разница в поведении при работе скриптов на apache и на nginx+php-fpm.
Вопрос тот же:
Кто-нить с таким сталкивался? В какую сторону копать, что еще проверить?