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

Konstantin Belov belov1985 at gmail.com
Wed Mar 18 15:47:54 MSK 2009


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)






More information about the nginx-ru mailing list