ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Баг с location в nginx-devel-0. 7.42 ?



Igor Sysoev wrote:
On Wed, Mar 18, 2009 at 02:23:19PM +0200, Konstantin Belov wrote:

Igor Sysoev wrote:
On Wed, Mar 18, 2009 at 12:12:22AM +0200, Konstantin Belov wrote:

P. S. рут задается переменными, потому что так легче управлять конфигурацией при большом кол-ве шаблоных хостов.
А какой рут для "location ~* \.(jpg|jpeg|gif|css|js|png)$" ?

Вообще, конфигурацию можно переписать так:

      location / {
              root   /var/home/enews/www/public_html;
              index  index.php index.html;
      }

      location ~ \.php$ {
              root   /www/public_html;
              fastcgi_pass unix:/tmp/enews.sock;
              include /usr/local/etc/nginx/fastcgi.conf;
      }

      location ~* \.(jpg|jpeg|gif|css|js|png)$ {
              root   /var/home/enews/www/public_html;
              access_log   off;
              expires      30d;
      }

и использовать fastcgi.conf $document_root.

Сейчас такой:

location ~* \.(jpg|jpeg|gif|css|js|png)$ {
        root         $root_prefix$root;
        access_log   off;
        expires      30d;
}

Просто перед оптравкой письма несколько раз конфиг правил (странно, что сразу не заметил ошибку с root),
поэтому строчка и затерялась.



Если root наследуется location от server, то может лучше уже так:

Да, так даже лучше.

root   /var/home/enews/www/public_html;

location / {
        index  index.php index.html;
}

location ~ \.php$ {
        root   /www/public_html;
        fastcgi_pass unix:/tmp/enews.sock;
        include /usr/local/etc/nginx/fastcgi.conf;
}

location ~* \.(jpg|jpeg|gif|css|js|png)$ {
        access_log   off;
        expires      30d;
}



/usr/local/etc/nginx/fastcgi.conf:
        fastcgi_connect_timeout 3;
        fastcgi_send_timeout 10;
        fastcgi_index   index.php;
        fastcgi_param   DOCUMENT_ROOT   $root;
        fastcgi_param   SCRIPT_FILENAME $root$fastcgi_script_name;
        fastcgi_param   PATH_TRANSLATED $root$fastcgi_script_name;
        fastcgi_param   QUERY_STRING    $query_string;
        fastcgi_param   REQUEST_URI     $request_uri;
        fastcgi_param   REQUEST_METHOD  $request_method;
        fastcgi_param   CONTENT_TYPE    $content_type;
        fastcgi_param   CONTENT_LENGTH  $content_length;
        fastcgi_param   SERVER_ADDR     $server_addr;
        fastcgi_param   SERVER_PORT     $server_port;
        fastcgi_param   SERVER_PROTOCOL $server_protocol;
        fastcgi_param   SERVER_NAME     $server_name;
        fastcgi_param   REMOTE_USER     $remote_user;
        fastcgi_param   REMOTE_ADDR     $remote_addr;
        fastcgi_param   REMOTE_PORT     $remote_port;

А здесь все $root нужно заменить на $document_root.
Спасибо, так и сделаю :-)

Кстати, всё это можно за'include'ить или описать дажена уровне http,
если оно у всех \.php$ одинаковое.

Не совсем понял, как это можно сделать :-)

location ~ \.php$ {
        root   /www/public_html;
        fastcgi_pass unix:/tmp/enews.sock;
        include /usr/local/etc/nginx/fastcgi.conf;
}


Просто unix сокет у всех хостов свой. (unix:/tmp/$user.sock)




 




Copyright © Lexa Software, 1996-2009.