Ð’ð¾ð¿ñ€ð¾ñ ð¿ð¾ ð»ð¸ð¼ð¸ñ‚ð¸ñ€ð¾ð²ð°ð½ð¸ñž ñ ðºð¾ñ€ð¾ññ‚ð¸

Здравствуйте.
Увидел
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#limit_rate

location /flv/ {
flv;
limit_rate_after 500k;
limit_rate 50k;
}

Я так понял, что это лимитирование скорости на файлы, расположенные в
папке
/flv/ ?
Я сделал следующее:

location /lim/
{
lim;
limit_rate 4k;
}


location / {
root C:/1/;
index index.html index.htm;
}

При этом в логах ошибка про lim. Убрал lim;.
Сделал потом так:
location /lim/
{
limit_rate 4k;
}

nginx запустился успешно.
Но тут начались странности:
В C:/1/ есть две папки - lim и nelim. На lim я прописал правило, должен
резать скорость, на nelim нет правила, должен на безлимитной скорости
отдавать.
Но странно - из папки http://192.168.1.4/nelim/ файлы отдаются, не
лимитировано.
А вот по адресу http://192.168.1.4/lim/ выдаётся на любой файл ошибка:

404 Not Found
nginx/0.8.36

Что я не так сделал и почему выдаётся ошибка 404 при прописанном правиле
лимитирования скорости?

äÏÂÒÙÊ ÄÅÎØ!

2010/5/16 áÒÔÕÒ èÕÓÎÕÔÄÉÎÏ× [email protected]:

úÄÒÁ×ÓÔ×ÕÊÔÅ.
õ×ÉÄÅÌ http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#limit_rate
location /flv/ {
flv;
flv ÔÕÔ ×ËÌÀÞÁÅÔ ÏÂÒÁÂÏÔËÕ ÚÁÐÒÏÓÁ flv-ÍÏÄÕÌÅÍ - ÐÏÄÄÅÒÖËÕ ×ÅÂÓÅÒ×ÅÒÏÍ
ÁÒÇÕÍÅÎÔÁ ?start=xx ÐÒÉ ÏÔÄÁÞÅ ËÏÎÔÅÎÔÁ.

ñ ÓÄÅÌÁÌ ÓÌÅÄÕÀÝÅÅ:
location /lim/
{
šlim;
ôÁË ÞÔÏ lim ÔÕÔ ÎÅ ÎÕÖÅÎ.

óÄÅÌÁÌ ÐÏÔÏÍ ÔÁË:
location /lim/
š{
limit_rate 4k;
úÄÅÓØ ÎÕÖÎÏ ÄÏÂÁ×ÉÔØ:
root C:/1;
ôÁË ËÁË ÷Ù ÕËÁÚÁÌÉ root ÔÏÌØËÏ ÄÌÑ ÚÁÐÒÏÓÏ×, ÐÏÐÁÄÁÀÝÉÈ × location /,
ÎÏ ÎÅ ÄÌÑ ÚÁÐÒÏÓÏ×, ÐÏÐÁÄÁÀÝÉÈ × location /lim.
íÏÖÎÏ ÐÏÐÒÏÂÏ×ÁÔØ ÐÒÏÓÔÏ ×ÙÎÅÓÔÉ ÄÉÒÅËÔÉ×Õ root ÎÁ ÕÒÏ×ÅÎØ server{}.

Спасибо, прекрасно!
Но теперь я в ступоре:
Получается, что:
/lim/имя файла - скорость режется
/nelim/имя файла - скорость не режется

Вопрос - как мне сделать динамические ссылки? Ведь юзверь, один раз
увидев,
что если качать не с адреса /lim/имя файла, а с /nelim/имя файла, то
каждый
раз будет просто руками исправлять адресную строку на /nelim/имя файла и
качать с /nelim/имя файла.
Как динамику-то сделать? В своё время я писал задачку, заточенную под
эту
задачу - при запросе файла с сайта юзверю передавалась ссылка
/userid/filehash, а в БД MySQL заносилась запись с параметрами userid,
filehash, path to file (определяется средствами PHP на основе filehash)
и
downloadspeed. Программа при запросе брала userid и filehash с GET URL и
смотрела по БД, есть ли запись в ней с таким userid и filehash ,если
есть,
то отдавала файл на скорости, взятой из записи в БД.

Так вот, как-нибудь возможно ли на nginx построить такой аналог?
Если да, то как?

16 мая 2010 г. 15:48 пользователь Boris D. [email protected]
написал:

2010/5/16 áÒÔÕÒ èÕÓÎÕÔÄÉÎÏ× [email protected]:

óÐÁÓÉÂÏ, ÐÒÅËÒÁÓÎÏ!
îÏ ÔÅÐÅÒØ Ñ × ÓÔÕÐÏÒÅ:
ðÏÌÕÞÁÅÔÓÑ, ÞÔÏ:
/lim/ÉÍÑ ÆÁÊÌÁ - ÓËÏÒÏÓÔØ ÒÅÖÅÔÓÑ
/nelim/ÉÍÑ ÆÁÊÌÁ - ÓËÏÒÏÓÔØ ÎÅ ÒÅÖÅÔÓÑ

÷ÏÐÒÏÓ - ËÁË ÍÎÅ ÓÄÅÌÁÔØ ÄÉÎÁÍÉÞÅÓËÉÅ ÓÓÙÌËÉ? ÷ÅÄØ ÀÚ×ÅÒØ, ÏÄÉÎ ÒÁÚ Õ×ÉÄÅ×,
ÞÔÏ ÅÓÌÉ ËÁÞÁÔØ ÎÅ Ó ÁÄÒÅÓÁš/lim/ÉÍÑ ÆÁÊÌÁ, Á Ó /nelim/ÉÍÑ ÆÁÊÌÁ, ÔÏ ËÁÖÄÙÊ
ÒÁÚ ÂÕÄÅÔ ÐÒÏÓÔÏ ÒÕËÁÍÉ ÉÓÐÒÁ×ÌÑÔØ ÁÄÒÅÓÎÕÀ ÓÔÒÏËÕ ÎÁ /nelim/ÉÍÑ ÆÁÊÌÁ É
ËÁÞÁÔØ Óš/nelim/ÉÍÑ ÆÁÊÌÁ.
ëÁË Ñ ÐÏÎÑÌ, Õ ÷ÁÓ × /lim É /nelim ÈÒÁÎÑÔÓÑ ÒÁÚÎÙÅ ÆÁÊÌÙ ÉÚ c:/1/lim É
c:/1/nelim. åÓÌÉ ÈÏÞÅÔÓÑ ÐÏ ÏÂÏÉÍ ÁÄÒÅÓÁÍ ÏÔÄÁ×ÁÔØ ÆÁÊÌÙ ÉÚ c:/, ÔÏ
ÎÁÄÏ ÎÁÐÉÓÁÔØ ×ÏÔ ÔÁË:
location /lim/
{
limit_rate …;
alias c:/1/;
}
location /nelim/
{
alias c:/1/;
}

ëÁË ÄÉÎÁÍÉËÕ-ÔÏ ÓÄÅÌÁÔØ? ÷ Ó×Ï£ ×ÒÅÍÑ Ñ ÐÉÓÁÌ ÚÁÄÁÞËÕ, ÚÁÔÏÞÅÎÎÕÀ ÐÏÄ ÜÔÕ
ÚÁÄÁÞÕ - ÐÒÉ ÚÁÐÒÏÓÅ ÆÁÊÌÁ Ó ÓÁÊÔÁ ÀÚ×ÅÒÀ ÐÅÒÅÄÁ×ÁÌÁÓØ ÓÓÙÌËÁ
/userid/filehash, Á × âä MySQL ÚÁÎÏÓÉÌÁÓØ ÚÁÐÉÓØ Ó ÐÁÒÁÍÅÔÒÁÍÉ userid,
filehash, path to file (ÏÐÒÅÄÅÌÑÅÔÓÑ ÓÒÅÄÓÔ×ÁÍÉ PHP ÎÁ ÏÓÎÏ×Å filehash) É
downloadspeed. ðÒÏÇÒÁÍÍÁ ÐÒÉ ÚÁÐÒÏÓÅ ÂÒÁÌÁ userid É filehash Ó GET URL É
ÓÍÏÔÒÅÌÁ ÐÏ âä, ÅÓÔØ ÌÉ ÚÁÐÉÓØ × ÎÅÊ Ó ÔÁËÉÍšuserid É filehash ,ÅÓÌÉ ÅÓÔØ,
ÔÏ ÏÔÄÁ×ÁÌÁ ÆÁÊÌ ÎÁ ÓËÏÒÏÓÔÉ, ×ÚÑÔÏÊ ÉÚ ÚÁÐÉÓÉ × âä.
ôÁË ×ÏÔ, ËÁË-ÎÉÂÕÄØ ×ÏÚÍÏÖÎÏ ÌÉ ÎÁ nginx ÐÏÓÔÒÏÉÔØ ÔÁËÏÊ ÁÎÁÌÏÇ?
ôÏ, ÞÔÏ ÷Ù ÈÏÔÉÔÅ ÓÄÅÌÁÔØ ÍÏÖÎÏ ÓÄÅÌÁÔØ, ÉÓÐÏÌØÚÕÑ ÐÒÏËÓÉÒÏ×ÁÎÉÅ ÎÁ
http ÉÌÉ fastcgi-ÂÅËÅÎÄ.
õ ÷ÁÓ ÄÏÌÖÅÎ ÂÙÔØ location ÄÌÑ ÆÁÊÌÏ×:
location /files/
{
alias c:/1/;
internal;
}
äÉÒÅËÔÉ×Á internal ÎÅ ÐÏÚ×ÏÌÉÔ ÐÏÌØÚÏ×ÁÔÅÌÑÍ ÐÏÌÕÞÉÔØ ÄÏÓÔÕÐ Ë ÆÁÊÌÁÍ ÎÁÐÒÑÍÕÀ.
é location ÄÌÑ ÂÅËÅÎÄÁ:
location /get_file/
{
proxy_pass/fastcgi_pass …;
}
îÁ ÂÅËÅÎÄÅ ÄÏÌÖÅÎ ×ÉÓÅÔØ ÐÒÏÓÔÅÎØËÉÊ ÓËÒÉÐÔ - ÐÒÉ ÐÒÉÎÑÔÉÉ ÚÁÐÒÏÓÁ
×ÉÄÁ /get_file/?user=userid&file=filehash ÌÅÚÔØ × ÂÁÚÕ É:

  1. ïÔÄÁ×ÁÔØ ÚÁÇÏÌÏ×ÏË:
    Content-Disposition: attachment; filename=ÉÍÑ_ÆÁÊÌÁ
  2. ïÔÄÁ×ÁÔØ ÚÁÇÏÌÏ×ÏË:
    X-Accel-Redirect: /files/ÐÕÔØ_ÄÏ_ÆÁÊÌ_ÏÔÎÏÓÉÔÅÌØÎÏ_c:/1/
  3. åÓÌÉ ÎÕÖÎÏ ÏÇÒÁÎÉÞÉÔØ ÓËÏÒÏÓÔØ, ÏÔÄÁ×ÁÔØ ÚÁÇÏÌÏ×ÏË:
    X-Accel-Limit-Rate: ÏÇÒÁÎÉÞÅÎÉÅ_ÓËÏÒÏÓÔÉ_×_ÂÁÊÔÁÈ_×_ÓÅËÕÎÄÕ.

á ×ÏÏÂÝÅ - ÉÓÐÏÌØÚÏ×ÁÎÉÅ nginx/windows ÄÌÑ ÓÅÒØÅÚÎÙÈ ÃÅÌÅÊ, ËÒÏÍÅ
ÔÅÓÔÉÒÏ×ÁÎÉÑ ÐÒÉ ÒÁÚÒÁÂÏÔËÅ, ÎÁÓÔÏÑÔÅÌØÎÏ ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ.

úÄÒÁ×ÓÔ×ÕÊÔÅ.

ëÁË ÷Ù É ÐÒÅÄÌÁÇÁÌÉ, Ñ × ËÏÎÆÉÇÅ ÎÇÉÎËÓÁ ×Î£Ó ÉÚÍÅÎÅÎÉÑ:

server {
listen 80;
server_name localhost;
limit_conn one 1;

    location /get_file/
    {
      proxy_pass http://localhost:8070/qwe/headertest;
    }

    location /files/
    {
     root (ÔÕÔ ÐÒÏÂÏ×ÁÌ ÓÔÁ×ÉÔØ É alias) c:/1;
     internal;
    }

location /lim/
{
root   C:/1;
      limit_rate  4k;
      limit_conn one 5;
}

óÅÒ×ÌÅÔÏÍ ÏÔÄÁÀ ÓÌÅÄÕÀÝÅÅ:

        response.setHeader("Content-Disposition: attachment", 

“1.rar”);
response.setHeader(“X-Accel-Redirect:”, “/files/lim/1.rar”);
response.setHeader(“X-Accel-Limit-Rate:”, “155”);

ðÒÉ ÜÔÏÍ × ÌÏÇ ÐÉÛÅÔÓÑ ÏÛÉÂËÁ
2010/05/22 19:43:49 [crit] 692#732: *14 CreateFile()
“C:\1\nginx-0.8.36/html: /files/lim/1.rar” failed (123: óÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ
× ÉÍÅÎÉ ÆÁÊÌÁ, ÉÍÅÎÉ ÐÁÐËÉ ÉÌÉ ÍÅÔËÅ ÔÏÍÁ), client: 192.168.1.2, server: localhost, request:
“GET /get_file/ HTTP/1.1”, upstream:
http://127.0.0.1:8070/qwe/headertest”, host: “192.168.1.4”
2010/05/22 19:43:49 [error] 692#732: *16 CreateFile() “C:/1/favicon.ico”
failed (2: îÅ ÕÄÁÅÔÓÑ ÎÁÊÔÉ ÕËÁÚÁÎÎÙÊ ÆÁÊÌ), client: 192.168.1.2, server: localhost,
request: “GET /favicon.ico HTTP/1.1”, host: “192.168.1.4”, referrer:
http://192.168.1.4/get_file/

ðÏÐÒÏÂÏ×ÁÌ × ÓÅÒ×ÌÅÔÅ ÐÏÍÅÎÑÔØ ÎÁ
response.setHeader(“X-Accel-Redirect:”, “C:/1/lim/1.rar”);
÷ ÌÏÇÅ ÓÔÁÌÏ ÏÔÏÂÒÁÖÁÔÔØÓÑ ÓÌÅÄÕÀÝÅÅ:

2010/05/22 19:38:44 [crit] 692#732: *11 CreateFile()
“C:\1\nginx-0.8.36/html: C:/1/lim/1.rar” failed (123: óÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÉÍÅÎÉ ÆÁÊÌÁ,
ÉÍÅÎÉ ÐÁÐËÉ ÉÌÉ ÍÅÔËÅ ÔÏÍÁ), client: 192.168.1.2, server: localhost, request: “GET
/get_file/ HTTP/1.1”, upstream: “http://127.0.0.1:8070/qwe/headertest”,
host: “192.168.1.4”
2010/05/22 19:38:44 [error] 692#732: *13 CreateFile() “C:/1/favicon.ico”
failed (2: îÅ ÕÄÁÅÔÓÑ ÎÁÊÔÉ ÕËÁÚÁÎÎÙÊ ÆÁÊÌ), client: 192.168.1.2, server: localhost,
request: “GET /favicon.ico HTTP/1.1”, host: “192.168.1.4”, referrer:
http://192.168.1.4/get_file/

þÔÏ ÎÅ ÔÁË,ÐÏÞÅÍÕ nginx ÐÙÔÁÅÔÓÑ ÎÁÊÔÉ ÆÁÊÌ × C:\1\nginx-0.8.36/html
ÈÏÔÑ Ñ ÅÍÕ ÕËÁÚÁÌ
location /files/
{
root (ÔÕÔ ÐÒÏÂÏ×ÁÌ ÓÔÁ×ÉÔØ É alias) c:/1;
internal;
}

ðÒÏÛÕ ËÏÎÓÕÌØÔÁÃÉÉ…

÷Ù ÐÉÓÁÌÉ 16 ÍÁÑ 2010 Ç., 16:21:01:

location /lim/
{
limit_rate …;
alias c:/1/;
}
location /nelim/
{
alias c:/1/;
}

alias c:/1/;

Content-Disposition: attachment; filename=ÉÍÑ_ÆÁÊÌÁ
2) ïÔÄÁ×ÁÔØ ÚÁÇÏÌÏ×ÏË:
X-Accel-Redirect: /files/ÐÕÔØ_ÄÏ_ÆÁÊÌ_ÏÔÎÏÓÉÔÅÌØÎÏ_c:/1/
3) åÓÌÉ ÎÕÖÎÏ ÏÇÒÁÎÉÞÉÔØ ÓËÏÒÏÓÔØ, ÏÔÄÁ×ÁÔØ ÚÁÇÏÌÏ×ÏË:
X-Accel-Limit-Rate: ÏÇÒÁÎÉÞÅÎÉÅ_ÓËÏÒÏÓÔÉ_×_ÂÁÊÔÁÈ_×_ÓÅËÕÎÄÕ.

á ×ÏÏÂÝÅ - ÉÓÐÏÌØÚÏ×ÁÎÉÅ nginx/windows ÄÌÑ ÓÅÒØÅÚÎÙÈ ÃÅÌÅÊ, ËÒÏÍÅ
ÔÅÓÔÉÒÏ×ÁÎÉÑ ÐÒÉ ÒÁÚÒÁÂÏÔËÅ, ÎÁÓÔÏÑÔÅÌØÎÏ ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ.


ó Õ×ÁÖÅÎÉÅÍ,
Forpdfsending mailto:[email protected]

úÄÒÁ×ÓÔ×ÕÊÔÅ.

÷ÏÐÒÏÓ ×ÏÚÎÉË, Õ×ÁÖÁÅÍÙÅ ÒÁÚÒÁÂÏÔÞÉËÉ É ÐÏÌØÚÏ×ÁÔÅÌÉ nginx.
óÄÅÌÁÌ ×Ó£ ËÁË ÏÐÉÓÁÎÏ ÎÉÖÅ.
é nginx ×ÏÚ×ÒÁÝÁÅÔ ÏÛÉÂËÕ:
2010/06/19 18:23:06 [crit] 3480#1928: *31 CreateFile()
“d:/Distributivs/ü×ÅÒÅÓÔ.exe” failed (1113: óÉÍ×ÏÌ àÎÉËÏÄÁ ÎÅ ÉÍÅÅÔ ÓÏÐÏÓÔÁ×ÌÅÎÉÑ × ËÏÎÅÞÎÏÊ
ÍÎÏÇÏÂÁÊÔÏ×ÏÊ ËÏÄÏ×ÏÊ ÓÔÒÁÎÉÃÅ), client: 52.215.77.77, server: zxcvb.no-ip.org,
request: “GET /get_file/?filehash=2b161da577fc7ba4d330283a4d748230
HTTP/1.1”, upstream:
http://127.0.0.1:80/get_file/?filehash=2b161da577fc7ba4d330283a4d748230”,
host: “zxcvb.no-ip.org:8080
2010/06/19 18:23:14 [crit] 3480#1928: *33 CreateFile()
“d:/Distributivs/ü×ÅÒÅÓÔ.exe” failed (1113: óÉÍ×ÏÌ àÎÉËÏÄÁ ÎÅ ÉÍÅÅÔ ÓÏÐÏÓÔÁ×ÌÅÎÉÑ × ËÏÎÅÞÎÏÊ
ÍÎÏÇÏÂÁÊÔÏ×ÏÊ ËÏÄÏ×ÏÊ ÓÔÒÁÎÉÃÅ), client: 52.215.77.77, server: zxcvb.no-ip.org,
request: “GET /get_file/?filehash=2b161da577fc7ba4d330283a4d748230
HTTP/1.1”, upstream:
http://127.0.0.1:80/get_file/?filehash=2b161da577fc7ba4d330283a4d748230”,
host: “zxcvb.no-ip.org:8080

ðÒÏÛÕ ÓÏÄÅÊÓÔ×ÉÑ × ÉÓÐÒÁ×ÌÅÎÉÉ ÄÁÎÎÏÊ ÏÛÉÂËÉ.
éÍÅÎÁ ÆÁÊÌÏ× - ÒÕÓÓËÉÅ. îÅÕÖÅÌÉ nginx ÎÅ ÐÒÅÄÎÁÚÎÁÞÅÎ ÄÌÑ ÒÁÂÏÔÙ Ó
ÆÁÊÌÁÍÉ, ÎÁÚ×ÁÎÉÑ ËÏÔÏÒÙÈ - ÒÕÓÓËÉÅ? åÓÌÉ ÄÁ, ÔÏ ËÁË ÉÓÐÒÁ×ÉÔØ ÜÔÕ
ÏÛÉÂËÕ.
P.S. èÉÄÅÒÙ ÏÔÄÁÀÔÓÑ ÎÏÒÍÁÌØÎÏ.

÷Ù ÐÉÓÁÌÉ 16 ÍÁÑ 2010 Ç., 16:21:01:

location /lim/
{
limit_rate …;
alias c:/1/;
}
location /nelim/
{
alias c:/1/;
}

alias c:/1/;

Content-Disposition: attachment; filename=ÉÍÑ_ÆÁÊÌÁ
2) ïÔÄÁ×ÁÔØ ÚÁÇÏÌÏ×ÏË:
X-Accel-Redirect: /files/ÐÕÔØ_ÄÏ_ÆÁÊÌ_ÏÔÎÏÓÉÔÅÌØÎÏ_c:/1/
3) åÓÌÉ ÎÕÖÎÏ ÏÇÒÁÎÉÞÉÔØ ÓËÏÒÏÓÔØ, ÏÔÄÁ×ÁÔØ ÚÁÇÏÌÏ×ÏË:
X-Accel-Limit-Rate: ÏÇÒÁÎÉÞÅÎÉÅ_ÓËÏÒÏÓÔÉ_×_ÂÁÊÔÁÈ_×_ÓÅËÕÎÄÕ.

á ×ÏÏÂÝÅ - ÉÓÐÏÌØÚÏ×ÁÎÉÅ nginx/windows ÄÌÑ ÓÅÒØÅÚÎÙÈ ÃÅÌÅÊ, ËÒÏÍÅ
ÔÅÓÔÉÒÏ×ÁÎÉÑ ÐÒÉ ÒÁÚÒÁÂÏÔËÅ, ÎÁÓÔÏÑÔÅÌØÎÏ ÎÅ ÒÅËÏÍÅÎÄÕÅÔÓÑ.


ó Õ×ÁÖÅÎÉÅÍ,
Forpdfsending mailto:[email protected]