On Sun, 2 Jul 2006 andrey@xxxxxxxxxxxxxxxxxxxxxxxxx wrote:
Я с ним (nginx) первый раз столкнулся. Замучился уже с настройкой rewrite+php
(fastcgi). Могли бы показать?
Мне надо сдлелать "разброску" по поддоменам (это я уже решил) так, чтоб это
нормально работало с PHP (это и есть проблема).
Проблема заключается в том, что в ответ на http://SOME.localhost.ru/ я
получаю то, что ожидается (/index.php), а в ответ на
http://SOME.localhost.ru/index.php получаю сообщение "No input file
specified", т.е. я неверно настроил реврайтинг либо, что более
вероятно, ошибка в строке fastcgi_param SCRIPT_FILENAME.
С этой строкой я долго возился, пытаясь вписывать в нее значения по
условиям (типа if ($host_name != SOME.localhost.ru)), но ничего не
вышло.
Могзи кипят:) Надеюсь на помощь.
Вот мой конфиг.
server {
listen 127.0.0.1:80;
server_name localhost.ru *.localhost.ru
location / {
root /home/www/data/public_html/;
index index.php index.html index.htm;
# перенаправление YYY.XXX.localhost.ru на XXX.localhost.ru
if ($http_host ~ ^.+\.[^\.]+\.localhost\.ru.*$) {
rewrite ^(.*)$ $http_host$1;
rewrite ^.*\.([^\.]+)\.localhost\.ru(.*)$
http://$1.localhost.ru$2 permanent;
break;
}
# отображение XXX.localhost.ru в пользовательские папки XXX
if ($http_host ~ ^.*\.localhost\.ru.*$) {
rewrite ^(.*)$ $http_host$1;
rewrite ^(.+)\.localhost\.ru(.*)$ /ub$2 break;
break;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
/home/www/data/public_html$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
}
}
Нужно вынести весь rewrite на уровень сервера.
Игорь Сысоев
http://sysoev.ru