Возникает 500 ошибка при попытке настройки boost на сайте - при открытии урлов с параметрами (от поиска вьюс до utm меток метрики), а также при открытии внешних ссылок, которые редиректятся модулем gotwo (ссылка вида /go/233).
Лог ничего не говорит.
Использовал фрагмент конфига нжинса отсюда: http://www.drupal.ru/node/103671
В итоге у меня получился следующий конфиг:
listen 80;
server_name www.site.ru;
return 301 http://site.ru$request_uri;
}
server {
listen 80 default_server;
server_name site.ru;
root /var/www/html/drupal;
index index.php index.html index.htm;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ \..*/.*\.php$ {
return 403;
}
location ~ ^/sites/.*/private/ {
return 403;
}
location ~ (^|/)\. {
return 403;
}
location [user=rewrite]rewrite[/user] {
rewrite ^ /index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_intercept_errors off;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~ ^/sites/.*/files/styles/ {
try_files $uri [user=rewrite]rewrite[/user];
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
##### BOOST #####
location / {
#вместо отсылки к друпалу, сперва идем в кеш
try_files $uri [user=boost]boost[/user];
}
#основные правила для Boost
location [user=boost]boost[/user] {
#модуль boost выставляет залогиненым юзерам кукис DRUPAL_UID, если находим его, игнорируем кеш
if ($http_cookie ~ "DRUPAL_UID" ) {
return 405;
}
if ($request_method !~ ^(GET|HEAD)$ ) {
return 405;
}
#кешировать результаты отправки форм бесполезно, потому игнорируем кеш, если видим пост запрос.
if ($request_method = "POST" ) {
return 405;
}
#в случае 405 кода возврата передаем управление друпалу.
error_page 405 = [user=drupal]drupal[/user];
#запрещаем браузеру кеширование
add_header Expires "Sun, 19 Nov 1978 05:00:00 GMT";
add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
#ищем кеш буста, если его нет, отдаем управление друпалу, GET переменные учитываются(собственно именно эта строчка отличается от того, что можно найти в гугле).
try_files /cache/normal/$host${uri}_$args.html /cache/$host/0$uri.html /cache/$host/0${uri}/index.html [user=drupal]drupal[/user];
}
##### BOOST END #####
}
Есть какие-то идеи, что вызывает ошибку и как исправить это дело?
Комментарии
http://tlito.ru/node/259/
Спасибо огромное! Работает в итоге такой конфиг:
listen 80;
server_name www.site.ru;
return 301 http://site.ru$request_uri;
}
server {
listen 80 default_server;
server_name site.ru;
root /var/www/html/drupal;
index index.php index.html index.htm;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ \..*/.*\.php$ {
return 403;
}
location ~ ^/sites/.*/private/ {
return 403;
}
location ~ (^|/)\. {
return 403;
}
location / {
try_files $uri @cache;
}
location @cache {
if ($http_cookie ~ "DRUPAL_UID") { return 405; }
if ($request_method !~ ^(GET|HEAD)$ ) { return 405; }
error_page 405 = @drupal;
add_header Expires "Tue, 22 Sep 1974 08:00:00 GMT";
add_header Cache-Control "must-revalidate, post-check=0, pre-check=0";
try_files /cache/normal/$host/${uri}_${args}.html /cache/perm/$host/${uri}_.css /cache/perm/$host/${uri}_.js /cache/$host/0$uri.html /cache/$host/0${uri}/index.html @drupal;
}
location @drupal {
rewrite ^/(.*)$ /index.php?q=$1;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_intercept_errors off;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~ ^/sites/.*/files/styles/ {
try_files $uri @rewrite;
}
}
ЗЫ Согласен с предыдущим оратором.
Подскажите, пожалуйста, ещё такой момент: этим код также отключается кеширование браузера? Это обязательно нужно? А то я логику просто не пойму, зачем.
Судя по какой-то фигне на талии, её уже накормили.