видимо rewrite и location

2013-11-05 Пенетрантность romkins514
день добрый. перечитал форум, перепробовал кучу вариантов, но не правильно
мыслю видимо совершенно. 
есть задача из редиректов апача, перевести в синтаксис нгикса. 
например.
RewriteRule ^/pro/neon/?n1=1&n2=2&n3=3$ /pro/neon/ [L,R=301]

сначала шёл простым путём, пробовал конвертерами, код получается не
правильный. позже читал форум, варианты шли примерно вот такие:
location = /pro/neon/ { rewrite ^/pro/neon/?n1=1&n2=2&n3=3$
http://xxx.ru/pro/neon/? redirect; }
или
location = /pro/neon/ {   if ($args ~ ^n1){return 301
http://xxx.ru/pro/neon/;} }

в общем-то практически все варианты возвращают 404 и в логах 
"/usr/local/etc/nginx/html/pro/neon/index.html" is not found (2: No such
file or directory)

спасибо

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,27,27#msg-27

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Уточнение логики работы ngx_http_auth_request_module

2013-11-05 Пенетрантность Dzmitry Stremkouski
Максим, спасибо за ваш ответ.
Я попробовал сделать апгрейд nginx по вашему замечанию, чтобы сузить
область поиска ошибки.

На данный момент у меня сборка следующая:
nginx version: nginx/1.5.6
built by gcc 4.4.5 (Debian 4.4.5-8)
TLS SNI support enabled
configure arguments: --with-openssl=/usr/build/openssl-1.0.1e
--conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log
--http-proxy-temp-path=/var/lib/nginx/proxy
--lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug
--with-http_flv_module --with-http_geoip_module
--with-http_gzip_static_module --with-http_realip_module
--with-http_stub_status_module --with-http_ssl_module
--with-http_sub_module --with-mail --with-mail_ssl_module
--add-module=/usr/build/nginx-upstream-fair-master --with-http_spdy_module
--with-http_auth_request_module

Все симптомы остались прежними.
CGI скрипты нагиоса работают через такую связку отлично, как и ранее.
однако, другие приложения (owncloud, roundcube) требуют "медленного"
прохода.
Ещё сделал различие, что нагиос работает везде GET запросами, в то время,
как owncloud, jenkins, roundcube делают периодически POST
Возможно, это неверно как-то обрабатывается.

Дополнительно, я попытался смягчить условия для мониторинга, прописал в
http секцию

  geo $ip_range {
default 0;
192.168.125.0/24 1;
  }

и в секциях server/location

  set $auth_location /auth/;
  if ( $ip_range = 1 ) {
set $auth_location /always_ok;
  }

  location = /always_ok {
return 200;
  }

  location /jenkins {
auth_request  $auth_location;
proxy_pass  http://192.168.125.37:8080;
proxy_buffering on;
proxy_set_headerSSL NO;
proxy_set_headerHost $host;
proxy_set_headerX-Real-IP $remote_addr;
proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout  1800;
  }

такая связка не работает.
Ошибка в логе всё та же. auth_request зачем-то ищет файл $auth_location а
не делает подзапрос в локейшн возращаемый переменной.

2013/11/05 13:17:13 [error] 32126#0: *1243 open()
"/usr/local/nginx/html$auth_location" failed (2: No such file or
directory), client: 185.6.244.255, server: ssl.stremki.net, request: "GET
/jenkins/login?from=%2Fjenkins%2F HTTP/1.1", subrequest: "$auth_location",
host: "ssl.stremki.net", referrer: "https://ssl.stremki.net/jenkins/";
2013/11/05 13:17:13 [error] 32126#0: *1243 auth request unexpected status:
404, client: 185.6.244.255, server: ssl.stremki.net, request: "GET
/jenkins/login?from=%2Fjenkins%2F HTTP/1.1", host: "ssl.stremki.net",
referrer: "https://ssl.stremki.net/jenkins/";

Я включил дебаг для своего адреса. Вот, его вывод.
http://pastebin.com/aKDG4gYk

Буду благодарен за помощь.



2013/11/5 Maxim Dounin 

> Hello!
>
> On Sat, Nov 02, 2013 at 10:21:39PM +0400, Dzmitry Stremkouski wrote:
>
> > Я установил nginx и модуль Максима Дунина (ngx_http_auth_request_module)
> > Настройку этого модуля производил по README от модуля.
> > Сам вебсервер собрал с такими параметрами в дебиане:
> >
> > nginx version: nginx/1.3.14
>
> Порекомендую начать с простого.  Не надо использовать 1.3.14, это
> старая и неподдерживаемая версия.  Надо взять 1.5.6, где
> соответствующий модуль в коробке.
>
> [...]
>
> > Я пытался делать без проксирования, указывая URI
> > auth_request http://192.168.125.35/auth/
> > Но это не работало и я в логах nginx видел ошибку
> > 2013/11/01 23:31:51 [error] 10938#0: *245 "/usr/local/nginx/htmlhttp://
> > 192.168.125.35/auth/index.html" is not found (2: No such file or
> > directory), client: 192.168.125.47, server: ssl.stremki.net, request:
> "GET
> > /mail/ HTTP/1.1", subrequest: "http://192.168.125.35/auth/";, host: "
> > ssl.stremki.net"
> >
> > Было бы здорово, если бы я смог работать без проксирования /auth/.
> > Просто, пока не понял, как прописать внутренний бекенд для обработки и
> > сейчас
> > пользуюсь локейшном /auth/ в режиме проксирования.
>
> Модуль auth_request не пытается реализовывать каких-либо
> протколов сам, он просто делает подзапрос.  Точно так же, как это
> делает SSI или модуль addition.
>
> Настроить необходимую обработку для соответствующего URI, который
> вы используете в auth_request - ваша задача, будь то проксирование
> или что-либо ещё.
>
> --
> Maxim Dounin
> http://nginx.org/en/donation.html
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 

(o_ - Dzmitry Stremkouski.
//\ - cel: +7 (916) 090-85-68
V_/_- web: http://mitroko.com

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Уточнение логики работы ngx_http_auth_request_module

2013-11-05 Пенетрантность Vadim Lazovskiy
Здравствуйте.

location /jenkins {
auth_request /auth;

...
}

location = /auth {
 internal;

 if ($ip_range) {
 return 200;
 }

 proxy_pass http://your_authentication_backend;
 ...
}

?
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Уточнение логики работы ngx_http_auth_request_module

2013-11-05 Пенетрантность Dzmitry Stremkouski
Вадим, здравствуйте!
Я могу сделать его internal, но мне этот локейшн нужен извне, также.
Или от этого ломается логика модуля Максима?


On Tue, Nov 5, 2013 at 3:13 PM, Vadim Lazovskiy
wrote:

> Здравствуйте.
>
> location /jenkins {
> auth_request /auth;
>
> ...
> }
>
> location = /auth {
>  internal;
>
>  if ($ip_range) {
>  return 200;
>  }
>
>  proxy_pass http://your_authentication_backend;
>  ...
> }
>
> ?
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 

(o_ - Dzmitry Stremkouski.
//\ - cel: +7 (916) 090-85-68
V_/_- web: http://mitroko.com

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Уточнение логики работы ngx_http_auth_request_module

2013-11-05 Пенетрантность Vadim Lazovskiy
Должно работать и без internal


5 ноября 2013 г., 15:14 пользователь Dzmitry Stremkouski
написал:

> Вадим, здравствуйте!
> Я могу сделать его internal, но мне этот локейшн нужен извне, также.
> Или от этого ломается логика модуля Максима?
>
>
> On Tue, Nov 5, 2013 at 3:13 PM, Vadim Lazovskiy  > wrote:
>
>> Здравствуйте.
>>
>> location /jenkins {
>> auth_request /auth;
>>
>> ...
>> }
>>
>> location = /auth {
>>  internal;
>>
>>  if ($ip_range) {
>>  return 200;
>>  }
>>
>>  proxy_pass http://your_authentication_backend;
>>  ...
>> }
>>
>> ?
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>
> --
> 
> (o_ - Dzmitry Stremkouski.
> //\ - cel: +7 (916) 090-85-68
> V_/_- web: http://mitroko.com
> 
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Уточнение логики работы ngx_http_auth_request_module

2013-11-05 Пенетрантность Dzmitry Stremkouski
Хотя, ваша конструкция

if ($ip_range) {
  return 200;
}

помогла решить проблему мониторинга.

RoundCube пока не работает через /auth/.

Спасибо!



2013/11/5 Dzmitry Stremkouski 

> Вадим, здравствуйте!
> Я могу сделать его internal, но мне этот локейшн нужен извне, также.
> Или от этого ломается логика модуля Максима?
>
>
> On Tue, Nov 5, 2013 at 3:13 PM, Vadim Lazovskiy  > wrote:
>
>> Здравствуйте.
>>
>> location /jenkins {
>> auth_request /auth;
>>
>> ...
>> }
>>
>> location = /auth {
>>  internal;
>>
>>  if ($ip_range) {
>>  return 200;
>>  }
>>
>>  proxy_pass http://your_authentication_backend;
>>  ...
>> }
>>
>> ?
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>
> --
> 
> (o_ - Dzmitry Stremkouski.
> //\ - cel: +7 (916) 090-85-68
> V_/_- web: http://mitroko.com
> 
>



-- 

(o_ - Dzmitry Stremkouski.
//\ - cel: +7 (916) 090-85-68
V_/_- web: http://mitroko.com

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Уточнение логики работы ngx_http_auth_request_module

2013-11-05 Пенетрантность Maxim Dounin
Hello!

On Tue, Nov 05, 2013 at 02:40:17PM +0400, Dzmitry Stremkouski wrote:

> Максим, спасибо за ваш ответ.
> Я попробовал сделать апгрейд nginx по вашему замечанию, чтобы сузить
> область поиска ошибки.
> 
> На данный момент у меня сборка следующая:
> nginx version: nginx/1.5.6
> built by gcc 4.4.5 (Debian 4.4.5-8)
> TLS SNI support enabled
> configure arguments: --with-openssl=/usr/build/openssl-1.0.1e
> --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
> --http-client-body-temp-path=/var/lib/nginx/body
> --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
> --http-log-path=/var/log/nginx/access.log
> --http-proxy-temp-path=/var/lib/nginx/proxy
> --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug
> --with-http_flv_module --with-http_geoip_module
> --with-http_gzip_static_module --with-http_realip_module
> --with-http_stub_status_module --with-http_ssl_module
> --with-http_sub_module --with-mail --with-mail_ssl_module
> --add-module=/usr/build/nginx-upstream-fair-master --with-http_spdy_module
> --with-http_auth_request_module
> 
> Все симптомы остались прежними.
> CGI скрипты нагиоса работают через такую связку отлично, как и ранее.
> однако, другие приложения (owncloud, roundcube) требуют "медленного"
> прохода.
> Ещё сделал различие, что нагиос работает везде GET запросами, в то время,
> как owncloud, jenkins, roundcube делают периодически POST
> Возможно, это неверно как-то обрабатывается.
> 
> Дополнительно, я попытался смягчить условия для мониторинга, прописал в
> http секцию
> 
>   geo $ip_range {
> default 0;
> 192.168.125.0/24 1;
>   }
> 
> и в секциях server/location
> 
>   set $auth_location /auth/;
>   if ( $ip_range = 1 ) {
> set $auth_location /always_ok;
>   }
> 
>   location = /always_ok {
> return 200;
>   }
> 
>   location /jenkins {
> auth_request  $auth_location;
> proxy_pass  http://192.168.125.37:8080;
> proxy_buffering on;
> proxy_set_headerSSL NO;
> proxy_set_headerHost $host;
> proxy_set_headerX-Real-IP $remote_addr;
> proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;
> proxy_read_timeout  1800;
>   }
> 
> такая связка не работает.
> Ошибка в логе всё та же. auth_request зачем-то ищет файл $auth_location а
> не делает подзапрос в локейшн возращаемый переменной.
> 
> 2013/11/05 13:17:13 [error] 32126#0: *1243 open()
> "/usr/local/nginx/html$auth_location" failed (2: No such file or
> directory), client: 185.6.244.255, server: ssl.stremki.net, request: "GET
> /jenkins/login?from=%2Fjenkins%2F HTTP/1.1", subrequest: "$auth_location",
> host: "ssl.stremki.net", referrer: "https://ssl.stremki.net/jenkins/";
> 2013/11/05 13:17:13 [error] 32126#0: *1243 auth request unexpected status:
> 404, client: 185.6.244.255, server: ssl.stremki.net, request: "GET
> /jenkins/login?from=%2Fjenkins%2F HTTP/1.1", host: "ssl.stremki.net",
> referrer: "https://ssl.stremki.net/jenkins/";
> 
> Я включил дебаг для своего адреса. Вот, его вывод.
> http://pastebin.com/aKDG4gYk

Директива auth_request не понимает переменных, и ваша конфигурация 
ожидаемо пытается обратиться к файлу, которого не существует.

Правильное решение исходной задачи "разрешить свою сеть, для 
остальных - требовать авторизацию" - написать что-нибудь вроде:

location / {
satisfy any;

auth_request /auth;

allow 192.168.125.0/24;
deny all;

...
}

http://nginx.org/r/satisfy

Что конкретно у вас происходит в случае, когда конфигурация 
работоспособна и помогает "замедление" - надо смотреть, но скорее 
всего просто авторизационный бекенд не справляется с нагрузкой.

-- 
Maxim Dounin
http://nginx.org/en/donation.html

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: При включении gzip не работает chunk-encoding

2013-11-05 Пенетрантность Maxim Dounin
Hello!

On Mon, Nov 04, 2013 at 05:10:14AM -0500, vulgast wrote:

> Такое впечетление, что есть какой-то буфер 4096+, который нужно заполнить,
> иначе чанк просто не отдается даже при сбросе буффера в php. Может это
> какой-то буфер в пхп или нжинксе?

Для эффективного сжатия данных - их надо сначала накопить хоть 
сколько-то, что и делает библиотека zlib, которую nginx использует 
для реализации gzip-сжатия.

Чтобы данные по возможности не буферизировались nginx'ом при 
обработки ответов fastcgi-бекенда, а сразу отправлялись клиенту (в 
случае gzip'а - ценой худшего сжатия) - существует директива 
fastcgi_buffering, документация тут:

http://nginx.org/r/fastcgi_buffering/ru

Директива fastcgi_buffering появилась в nginx 1.5.6.

-- 
Maxim Dounin
http://nginx.org/en/donation.html

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Nginx + Crome: part header is too long (400)

2013-11-05 Пенетрантность Bionicman
Используеся nginx + flash uploader для загузки файлов в медиахранилище. В
целом, конфигурация стандартная.

Возникла проблема с ответом от сервера кода 400 при попытке загрузки файлов
через crome (при этом неисправность плавающая и не зависит от самого файла).
Этот же файл в следующий раз загружается нормально, а какой-нибудь другой
отдаёт 400. Увеличение буферов не особо помогает.

Тестировалось также в FF, Opera, Safari: проблема не проявляется. Читал о
схожей проблеме тут: http://forum.nginx.org/read.php?2,214924,214926
Но не понял, какие из этого делать выводы.

Вот момент возникновения ошибки:

2013/11/05 19:17:45 [debug] 44995#0: *204201812 hashed path:
/home/web/tmp_storage/0038896449
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var: "Filedata"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script copy: ".name"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var:
"girl_walking_together_with_man_and_bike_into_the_sunset.jpg"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var: "Filedata"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script copy:
".content_type"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var:
"application/octet-stream"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 posix_memalign:
000803CA8000:4096 @16
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var: "Filedata"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script copy: ".path"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var:
"/home/web/tmp_storage/0038896449"
2013/11/05 19:17:45 [info] 44995#0: *204201812 started uploading file
"girl_walking_together_with_man_and_bike_into_the_sunset.jpg" to
"/home/web/tmp_storage/0038896449" (field "Filedata", content type
"application/octet-stream"), client: 83.220.58.78, server: test.org,
request: "POST
/uploadController/?username=test&userkey=aabc5f00f4140924e3014f2f42824160
HTTP/1.1", host: "test.org", referrer: "http://test.org/";
2013/11/05 19:17:45 [debug] 44995#0: *204201812 write: 32, 000803CA7000,
4096, 0
2013/11/05 19:17:45 [debug] 44995#0: *204201812 recv: eof:0, avail:5530,
err:0
2013/11/05 19:17:45 [debug] 44995#0: *204201812 recv: fd:30 8192 of 8192
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http client request body
recv 8192
2013/11/05 19:17:45 [debug] 44995#0: *204201812 write: 32, 000803CA7000,
4096, 4096
2013/11/05 19:17:45 [debug] 44995#0: *204201812 write: 32, 000803CA7000,
69, 8192
2013/11/05 19:17:45 [info] 44995#0: *204201812 finished uploading file
"girl_walking_together_with_man_and_bike_into_the_sunset.jpg" to
"/home/web/tmp_storage/0038896449", client: 83.220.58.78, server: test.org,
request: "POST
/uploadController/?username=test&userkey=aabc5f00f4140924e3014f2f42824160
HTTP/1.1", host: "test.org", referrer: "http://test.org/";
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var: "Filedata"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script copy: ".md5"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var:
"9456bbbe7305698929a7ff9ab111602c"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var: "Filedata"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script copy: ".size"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var: "8261"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 malformed filename in part
header
2013/11/05 19:17:45 [debug] 44995#0: *204201812 invalid Content-Disposition
header
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http finalize request: 400,
"/uploadController/?username=test&userkey=aabc5f00f4140924e3014f2f42824160"
a:1, c:2
2013/11/05 19:17:45 [debug] 44995#0: *204201812 http special response: 400,
"/uploadController/?username=test&userkey=aabc5f00f4140924e3014f2f42824160"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 uploadprogress error-tracker
error: 400
2013/11/05 19:17:45 [debug] 44995#0: *204201812 uploadprogress error-tracker
not tracking in this location
2013/11/05 19:17:45 [debug] 44995#0: *204201812 charset: "" > "utf-8"
2013/11/05 19:17:45 [debug] 44995#0: *204201812 HTTP/1.1 400 Bad Request

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,244464,244464#msg-244464

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Nginx + Crome: part header is too long (400)

2013-11-05 Пенетрантность Maxim Dounin
Hello!

On Tue, Nov 05, 2013 at 11:02:15AM -0500, Bionicman wrote:

> Используеся nginx + flash uploader для загузки файлов в медиахранилище. В
> целом, конфигурация стандартная.
> 
> Возникла проблема с ответом от сервера кода 400 при попытке загрузки файлов
> через crome (при этом неисправность плавающая и не зависит от самого файла).
> Этот же файл в следующий раз загружается нормально, а какой-нибудь другой
> отдаёт 400. Увеличение буферов не особо помогает.
> 
> Тестировалось также в FF, Opera, Safari: проблема не проявляется. Читал о
> схожей проблеме тут: http://forum.nginx.org/read.php?2,214924,214926
> Но не понял, какие из этого делать выводы.

Приведённая ссылка - про совсем другую проблему.

[...]

> 2013/11/05 19:17:45 [info] 44995#0: *204201812 finished uploading file
> "girl_walking_together_with_man_and_bike_into_the_sunset.jpg" to
> "/home/web/tmp_storage/0038896449", client: 83.220.58.78, server: test.org,
> request: "POST
> /uploadController/?username=test&userkey=aabc5f00f4140924e3014f2f42824160
> HTTP/1.1", host: "test.org", referrer: "http://test.org/";
> 2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var: "Filedata"
> 2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script copy: ".md5"
> 2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var:
> "9456bbbe7305698929a7ff9ab111602c"
> 2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var: "Filedata"
> 2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script copy: ".size"
> 2013/11/05 19:17:45 [debug] 44995#0: *204201812 http script var: "8261"
> 2013/11/05 19:17:45 [debug] 44995#0: *204201812 malformed filename in part
> header
> 2013/11/05 19:17:45 [debug] 44995#0: *204201812 invalid Content-Disposition
> header
> 2013/11/05 19:17:45 [debug] 44995#0: *204201812 http finalize request: 400,
> "/uploadController/?username=test&userkey=aabc5f00f4140924e3014f2f42824160"
> a:1, c:2

Судя по логу, используемому стороннему модулю не нравится 
заголовок Content-Disposition.

-- 
Maxim Dounin
http://nginx.org/en/donation.html

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Уточнение логики работы ngx_http_auth_request_module

2013-11-05 Пенетрантность Dzmitry Stremkouski
Максим, спасибо огромное за подсказку с satisfy.
Гораздо удобнее геомапинга.

Я немного поэкспериментировал и выяснил, что nginx подвисает в подзапросе,
если прилетает POST запрос.
Я вставил следующее правило:
  location /auth {
if ( $request_method = POST ) { return 200; }

И все приложения заработали, как положено. Бэкенд отлично справляется с
нагрузкой, дело не в нём.
Видимо, когда приходит запрос на
.https://ssl.stremki.net/project_nameметодом POST, то
ngx_http_auth_request_module
хочет сделать подзапрос таким же методом.

Но, мало того, что он хочет это сделать, он зачем-то добавляет знак ? в
конец локейшна /auth (это видно в дебаглоге)
На стороне бэкенда в этот момент не видно никакого трафика от nginx.
Тоесть, как только прилетает POST с данными на любой локейшн, который
проверяется вашим модулем, nginx строит подзапрос с методом POST, добавляет
символ ? и не делает подзапрос к бэкенду.

Простите, если запутал.




2013/11/5 Maxim Dounin 

> Hello!
>
> On Tue, Nov 05, 2013 at 02:40:17PM +0400, Dzmitry Stremkouski wrote:
>
> > Максим, спасибо за ваш ответ.
> > Я попробовал сделать апгрейд nginx по вашему замечанию, чтобы сузить
> > область поиска ошибки.
> >
> > На данный момент у меня сборка следующая:
> > nginx version: nginx/1.5.6
> > built by gcc 4.4.5 (Debian 4.4.5-8)
> > TLS SNI support enabled
> > configure arguments: --with-openssl=/usr/build/openssl-1.0.1e
> > --conf-path=/etc/nginx/nginx.conf
> --error-log-path=/var/log/nginx/error.log
> > --http-client-body-temp-path=/var/lib/nginx/body
> > --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
> > --http-log-path=/var/log/nginx/access.log
> > --http-proxy-temp-path=/var/lib/nginx/proxy
> > --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid
> --with-debug
> > --with-http_flv_module --with-http_geoip_module
> > --with-http_gzip_static_module --with-http_realip_module
> > --with-http_stub_status_module --with-http_ssl_module
> > --with-http_sub_module --with-mail --with-mail_ssl_module
> > --add-module=/usr/build/nginx-upstream-fair-master
> --with-http_spdy_module
> > --with-http_auth_request_module
> >
> > Все симптомы остались прежними.
> > CGI скрипты нагиоса работают через такую связку отлично, как и ранее.
> > однако, другие приложения (owncloud, roundcube) требуют "медленного"
> > прохода.
> > Ещё сделал различие, что нагиос работает везде GET запросами, в то время,
> > как owncloud, jenkins, roundcube делают периодически POST
> > Возможно, это неверно как-то обрабатывается.
> >
> > Дополнительно, я попытался смягчить условия для мониторинга, прописал в
> > http секцию
> >
> >   geo $ip_range {
> > default 0;
> > 192.168.125.0/24 1;
> >   }
> >
> > и в секциях server/location
> >
> >   set $auth_location /auth/;
> >   if ( $ip_range = 1 ) {
> > set $auth_location /always_ok;
> >   }
> >
> >   location = /always_ok {
> > return 200;
> >   }
> >
> >   location /jenkins {
> > auth_request  $auth_location;
> > proxy_pass  http://192.168.125.37:8080;
> > proxy_buffering on;
> > proxy_set_headerSSL NO;
> > proxy_set_headerHost $host;
> > proxy_set_headerX-Real-IP $remote_addr;
> > proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;
> > proxy_read_timeout  1800;
> >   }
> >
> > такая связка не работает.
> > Ошибка в логе всё та же. auth_request зачем-то ищет файл $auth_location а
> > не делает подзапрос в локейшн возращаемый переменной.
> >
> > 2013/11/05 13:17:13 [error] 32126#0: *1243 open()
> > "/usr/local/nginx/html$auth_location" failed (2: No such file or
> > directory), client: 185.6.244.255, server: ssl.stremki.net, request:
> "GET
> > /jenkins/login?from=%2Fjenkins%2F HTTP/1.1", subrequest:
> "$auth_location",
> > host: "ssl.stremki.net", referrer: "https://ssl.stremki.net/jenkins/";
> > 2013/11/05 13:17:13 [error] 32126#0: *1243 auth request unexpected
> status:
> > 404, client: 185.6.244.255, server: ssl.stremki.net, request: "GET
> > /jenkins/login?from=%2Fjenkins%2F HTTP/1.1", host: "ssl.stremki.net",
> > referrer: "https://ssl.stremki.net/jenkins/";
> >
> > Я включил дебаг для своего адреса. Вот, его вывод.
> > http://pastebin.com/aKDG4gYk
>
> Директива auth_request не понимает переменных, и ваша конфигурация
> ожидаемо пытается обратиться к файлу, которого не существует.
>
> Правильное решение исходной задачи "разрешить свою сеть, для
> остальных - требовать авторизацию" - написать что-нибудь вроде:
>
> location / {
> satisfy any;
>
> auth_request /auth;
>
> allow 192.168.125.0/24;
> deny all;
>
> ...
> }
>
> http://nginx.org/r/satisfy
>
> Что конкретно у вас происходит в случае, когда конфигурация
> работоспособна и помогает "замедление" - надо смотреть, но скорее
> всего просто авторизационный бекенд не справляется с нагрузкой.
>
> --
> Maxim Dounin
> http://nginx.org/en/donation.html
>
> ___
> nginx-ru mail

Nginx 1.2.7 + Apache2 2.2.24 on Freebsd 9.1 хостинг speedtest mini проблема с upload

2013-11-05 Пенетрантность ans34
На сервере живет связка из Nginx 1.2.7 + Apache2 2.2.24. Конфиг nginx
дефолтный, размеры буферов и т.п не переопределены. Перенес на этот сервер
свой хост speedtest mini. Папка с файлами спидеста расположена на рамдиске и
проблем с скоростью доступа к ним нет, скорость скачивания (downlaod) 300+
Mbit/s. Но есть проблемы с тестом скорости загрузки (upload) - 40-50 Mbit/s
После отключения sendfile в конфиге nginx скорость подросла до 80-120 Mbit/s
Во время теста загрузки в top io mode nginx показывает 100% загрузки 
VCSW  IVCSW   READ  WRITE  FAULT  TOTAL PERCENT COMMAND
 4839  0  0  16  0  16 100.00%  
 nginx

и gstat показывает активную запись на диск. 

Вынос client_body_temp_path на рамдиск и изменение переменных client_body*
относительно дефолтных значений  приводят только к ухудшению результата
теста скорости.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,244480,244480#msg-244480

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru