Баг с location в nginx-devel-0.7.42 ?

Igor Sysoev is at rambler-co.ru
Wed Mar 18 15:55:38 MSK 2009


On Wed, Mar 18, 2009 at 02:47:54PM +0200, Konstantin Belov wrote:

> 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)

fastcgi_param наследуются с уровня http:

http {

   fastcgi_param  ...
   fastcgi_param  ...
   fastcgi_param  ...
   fastcgi_param  ...

   server {
       location ~ \.php$ {
           fastcgi_pass   ...


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list