Сегодня настраивал Drupal на чистом Nginx, не как прокси и сталкнулся с некоторыми проблемами относительно Clear URL. Везде было предложено 2 варианта,
Первый (рекомендуется автором Nginx):
...
location / {
try_files $uri $uri/ [user=drupal]drupal[/user];
index index.php index.html index.htm;
}
location ~ \.php$ {
try_files $uri [user=drupal]drupal[/user];
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location [user=drupal]drupal[/user] {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param QUERY_STRING q=$uri&$args;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
}
...
}
Второй (плохой вариант):
...
location / {
index index.php index.html;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
}
...
}
Однако везде говорилось что через чистый try_files это работать не будет, однако попробовав, у меня заработало всё без каких либо проблем и ошибок, вот часть кода.
Третий вариант:
...
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
...
}
Работает и imagecache встроенный в 7ю ветку, чистые урлы и прочее. Ошибок и багов пока не наблюдал!
Комментарии
не тупи http://www.drupal.ru/node/31807
Сам не тупи! Покажи мне там чистый работающий вариант через try_files который я указал в 3м варианте?
буду недоверчивым! ушел тестить твой третий вариант.
Давай! Я сейчас 7ку успешно гоняю на этом варианте. Отлично работают все части ядра, админский Overlay, генерация превьюшек. Странно что этот вариант не документирован.
он работоспособным стал совсем недавно. а учитывая большую любовь Игоря к документированию, ничего странного тут нет
nginx такая штука, что документации обычно всегда мало и нужен "метод тыка" и бороздение рассылок, ИМХО...
Ну вот я найдя новый способ поделился им с народом
Спасибо. Вариант через try_files взял на вооружение
На сколько грамотна была бы замена всего первого варианта (полностью) на следующую конструкцию?
try_files $uri $uri/ /index.php?q=$uri&$args;
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Не сам придумал, нашёл тут: http://vds-admin.ru/nginx/zamena-rewriterule-v-nginx-dlya-razlichnykh-cm...
Но смущает он своей простотой...
Сам себе и отвечаю.
В общем проверил. Этот короткий вариант прекрасно работает.