Drupal + nginx + Apache: try files вызывает циклический редирект
STINGER_LP
nginx-forum at nginx.us
Tue Jul 24 20:52:20 UTC 2012
Здравствуйте. Столкнулся с проблемой
конфигурации nginx у себя на сервере под
Drupal 6. После установки nginx в связке с Apache,
перестал работать модуль Imagecache по
генерации различных версий картинок,
загружаемых на сайте. Много всего
вычитал в сети на эту тему и выяснил,
что в локейшенах стоит прописать
директиву try_files, чтобы в случае, если
файл не обнаружен, запрос передавался
на обработку Апачу, и тогда модуль
Imagecache должен сделать свое дело по
генерации файла.
Я делал все в частности как указано в
вики: http://wiki.nginx.org/HttpCoreModule#try_files за
исключением того, что у меня fastcgi не
стоит. Но в итоге, в каком бы я локейшене
не прописывал "try_files $uri $uri/ /index.php?q=$uri;" по
его адресу происходит циклическое
перенаправление, о чем любезно сообщил
мне Хром (Опера же тупо белую страницу
выдает).
Прошу помощи в настройке nginx, т.к. уже
больше месяца не могу решить эту
проблему, которая стопорит всю работу
над сайтом.
========================================
Вот так выглядит nginx.conf:
========================================
user www-data;
worker_processes 2;
error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
postpone_output 1460;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 75 20;
access_log /var/log/nginx/access.log;
gzip_comp_level 5;
gzip_types text/xml application/xml application/x-javascript
text/javascript text/css text/json;
gzip_disable "msie6";
output_buffers 1 32k;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
========================================
========================================
Вот так выглядит отдельный конфиг из
sites-available - mysite.com:
========================================
server {
listen mysite.com:80;
server_name mysite.com www.mysite.com dev.mysite.com
download.mysite.com www.mysite.com download.myoldsite.com
www.myoldsite.com www.download.myoldsite.com;
root /var/www/mysite/;
index index.php index.html index.htm;
charset utf-8;
access_log /var/log/nginx/access_mysite.log;
error_log /var/log/nginx/error_mysite.log warn;
if ( $host = myoldsite.com ) {
rewrite ^(.*) http://mysite.com$1 permanent;
}
if ( $host = www.myoldsite.com ) {
rewrite ^(.*) http://mysite.com$1 permanent;
}
if ( $host = www.download.mysite.com ) {
rewrite ^(.*) http://download.mysite.com$1 permanent;
}
if ( $host = www.myoldsite.com ) {
rewrite ^(.*) http://download.myoldsite.com$1 permanent;
}
if ($host !~
^(mysite.com|www.mysite.com|download.myoldsite.com|www.download.myoldsite.com|dev.mysite.com|www.dev.mysite.com)$)
{
rewrite ^(.*) http://mysite.com$1 permanent;
}
location / {
proxy_pass http://127.0.0.1:81/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;#
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
client_body_temp_path /var/nginx/client_body_temp 1 2;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_temp_path /var/nginx/proxy_temp 1 2;
try_files $uri $uri/ /index.php?q=$uri;
}
# Serve static files directly by nginx
location ^~ /files/ {
access_log off;
expires 20d;
try_files $uri $uri/ /index.php?q=$uri;
}
location ~*
^.+\.(jpeg|jpg|gif|png|bmp|ico|swf|exe|air|ttf|otf|xml|torrent|bup|ifo|info|nfo|cur|tar|zip|tgz|rar|bz2|pdf|psd|txt|doc|xls|docx|xlsx|bak|veg|sfk|css|js|ogg|mp3|ac3|flac|mp2|wav|wma|wmv|avi|mpeg|mpg|mov|flv|mp4|webm|mkv|ts|vob|m4v|rm|m2ts|mts)$
{
access_log off;
expires 30d;
try_files $uri $uri/ /index.php?q=$uri;
}
# Deny access to .htaccess files, if Apache's document root
concurs with nginx's one
location ~ /\.ht {
deny all;
access_log off;
log_not_found off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
# Deny access to unix backup files
location ~* \~$ {
deny all;
}
# Set error page handle by Drupal
error_page 500 502 503 504 /error50x.html;
location = /error50x.html {
root /var/www/mysite/;
}
error_page 404 /error404.html;
location = /error404.html {
root /var/www/mysite/;
}
# Deny access to system files and directories
location ~*
\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_
{
deny all;
}
location ~
"^/(CHANGELOG|COPYRIGHT|INSTALL\.mysql|INSTALL\.pgsql|INSTALL|LICENSE|MAINTAINERS|UPGRADE)\.txt"
{
deny all;
}
location ^~ /files/imagecache/ {
root /var/www/mysite;
index index.php index.html;
try_files $uri $uri/ /index.php?q=$uri;
}
}
========================================
Может кто-то сможет подсказать в чем
ошибка? При данной конфигурации с
указанием try_files $uri $uri/ /index.php?q=$uri; по
соответствующим локейшенам происходит
циклический редирект, в том числе на
всех внутренних страницах сайта.
Заранее благодарен за помощь.
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,228948,228948#msg-228948
Подробная информация о списке рассылки nginx-ru