Баг с location в nginx-devel-0.7.42 ?
Konstantin Belov
belov1985 at gmail.com
Wed Mar 18 01:12:22 MSK 2009
Igor Sysoev wrote:
> On Tue, Mar 17, 2009 at 05:56:39PM +0200, Konstantin Belov wrote:
>
>
>> Борис Долгов wrote:
>>
>>> Судя по всему, баг с определением директорий, в 0.7.40 было изменение.
>>>
>>> 17 марта 2009 г. 18:19 пользователь Konstantin Belov
>>> <belov1985 at gmail.com <mailto:belov1985 at gmail.com>> написал:
>>>
>>> Борис Долгов wrote:
>>>
>>> А 0.7.39 работает?
>>>
>>> 17 марта 2009 г. 17:39 пользователь Konstantin Belov
>>> <belov1985 at gmail.com <mailto:belov1985 at gmail.com>
>>> <mailto:belov1985 at gmail.com <mailto:belov1985 at gmail.com>>>
>>> написал:
>>>
>>>
>>> Борис Долгов wrote:
>>>
>>> А какая ФС?
>>>
>>> Система FreeBSD 7.0, fs - UFS.
>>>
>>> Только не думаю, что проблема в ней. Т. к. на nginx 0.6.35 и
>>> 0.7.33 (да и на всех старых версиях)
>>> работает нормально. Никаких правок в движок сайта (DLE) и в
>>> конфиг
>>> nginx не вносилось уже давно.
>>> Появилось именно при обновлении до 0.7.42.
>>>
>>>
>>>
>>>
>>> --
>>> С уважением, Борис Долгов.
>>> icq 77556665
>>> e-mail boris at dolgov.name <mailto:boris at dolgov.name>
>>> <mailto:boris at dolgov.name <mailto:boris at dolgov.name>>
>>>
>>> telnet 80.93.57.177 80
>>> Trying 80.93.57.177...
>>> Connected to gr3.p8.ru <http://gr3.p8.ru>.
>>> Escape character is '^]'.
>>> GET /img/topbox_01.gif HTTP/1.0
>>> host: news.ereality.ru <http://news.ereality.ru>
>>>
>>> HTTP/1.1 200 OK
>>> Server: nginx/0.7.39
>>> Date: Tue, 17 Mar 2009 15:17:21 GMT
>>>
>>> Content-Type: image/gif
>>> Content-Length: 67
>>> Last-Modified: Mon, 18 Aug 2008 16:44:25 GMT
>>> Connection: close
>>> Expires: Thu, 16 Apr 2009 15:17:21 GMT
>>>
>>> Cache-Control: max-age=2592000
>>> Accept-Ranges: bytes
>>>
>>> GIF89????????????????!?H???";
>>> Connection closed by foreign host.
>>>
>>>
>>> Да, все отлично работает.
>>>
>>>
>>> /usr/local/sbin/nginx739 -V
>>> nginx version: nginx/0.7.39
>>> built by gcc 4.2.1 20070719 [FreeBSD]
>>>
>>> configure arguments: --prefix=/usr/local/etc/nginx
>>> --with-cc-opt=-I/usr/local/include --with-ld-opt=-L/usr/local/lib
>>> --conf-path=/usr/local/etc/nginx/nginx.conf
>>> --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid
>>> --error-log-path=/var/log/nginx-error.log --user=www --group=www
>>> --http-client-body-temp-path=/var/tmp/nginx/client_body_temp
>>> --http-proxy-temp-path=/var/tmp/nginx/proxy_temp
>>> --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
>>> --http-log-path=/var/log/nginx-access.log --with-http_ssl_module
>>> --with-http_stub_status_module --with-http_sub_module
>>> --add-module=/usr/ports/www/nginx-devel/work/nginx_upload_module-2.0.8
>>> --add-module=/usr/ports/www/nginx-devel/work/ngx_http_upstream_keepalive-0.1
>>>
>>>
>>>
>>>
>>> --
>>> С уважением, Борис Долгов.
>>> icq 77556665
>>> e-mail boris at dolgov.name <mailto:boris at dolgov.name>
>>>
>> Igor Sysoev wrote:
>>
>>> Изменения в nginx 0.7.40
>>> 09.03.2009
>>>
>>> *) Изменение: модуль ngx_http_autoindex_module не показывал последний
>>> слэш для каталогов на файловой системе XFS; ошибка появилась в
>>> 0.7.15.
>>> Спасибо Дмитрию Кузьменко.
>>>
>>>
>> Да, возможно в этом и есть ошибка :)
>>
>
> А 0.7.40 не работает ? Я пока не могу воспроизвести.
>
>
>
Собрал nginx 0.7.42 дома под Mac OS X
Ошибка появляется при использовании переменных в root и location с
regex (location ~* \.(foo|bar)$ {)
Конфиг:
server {
listen 127.0.0.1:81;
location ~* \.(var)$ {
root /usr/home/www;
expires 30d;
}
}
$ telnet 127.0.0.1 81
Trying 127.0.0.1...
Connected to macbook.home.
Escape character is '^]'.
GET /test.var HTTP/1.0
HTTP/1.1 200 OK
Server: nginx/0.7.42
Date: Tue, 17 Mar 2009 21:56:00 GMT
Content-Type: application/octet-stream
Content-Length: 5
Last-Modified: Tue, 17 Mar 2009 21:52:38 GMT
Connection: close
Expires: Thu, 16 Apr 2009 21:56:00 GMT
Cache-Control: max-age=2592000
Accept-Ranges: bytes
test
Connection closed by foreign host.
А вот при таком конфиге получаем ошибку:
Конфиг:
server {
listen 127.0.0.1:81;
set $var "/usr/home/www";
location ~* \.(var)$ {
root $var;
expires 30d;
}
}
$ telnet 127.0.0.1 81
Trying 127.0.0.1...
Connected to macbook.home.
Escape character is '^]'.
GET /test.var HTTP/1.0
HTTP/1.1 404 Not Found
Server: nginx/0.7.42
Date: Tue, 17 Mar 2009 21:53:57 GMT
Content-Type: text/html
Content-Length: 169
Connection: close
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/0.7.42</center>
</body>
</html>
Connection closed by foreign host.
В логе ошибок:
2009/03/17 23:53:57 [error] 6063#0: *9 open() "/usr/home/www/te" failed
(2: No such file or directory), client: 127.0.0.1, server: macbook.home,
request: "GET /test.var HTTP/1.0"
Правда под макосью nginx возвращает 404, а не 301 :)
Кстати, при ручной сборке nginx740 -V
nginx version: nginx/0.7.40
built by gcc 4.2.1 20070719 [FreeBSD]
configure arguments: --prefix=/usr/local/etc/nginx
--with-cc-opt=-I/usr/local/include --with-ld-opt=-L/usr/local/lib
--conf-path=/usr/local/etc/nginx/nginx740.conf
--sbin-path=/usr/local/sbin/nginx740 --pid-path=/var/run/nginx740.pid
--error-log-path=/var/log/nginx-error.log --user=www --group=www
--http-client-body-temp-path=/var/tmp/nginx/client_body_temp
--http-proxy-temp-path=/var/tmp/nginx/proxy_temp
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
--http-log-path=/var/log/nginx-access.log --with-http_ssl_module
--with-http_stub_status_module --with-http_sub_module
--add-module=/usr/ports/www/nginx-devel/work/nginx_upload_module-2.0.8
--add-module=/usr/ports/www/nginx-devel/work/ngx_http_upstream_keepalive-0.1
я явно указал конфиг /usr/local/etc/nginx/nginx740.conf, но в итоге
после make install у меня перезаписался /usr/local/etc/nginx/nginx.conf :(
P. S. рут задается переменными, потому что так легче управлять
конфигурацией при большом кол-ве шаблоных хостов.
More information about the nginx-ru
mailing list