Баг с 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