Re: переменные в map -> proxy_pass

2016-04-11 Пенетрантность Den Bozhok
Благодарю за ответ!Однако, резолвер описан, и все-равно ошибка присутствует:  resolver 10.1.1.5 10.1.1.4  valid=10s;resolver_timeout 5s; 11.04.2016, 18:53, "kpoxa" :В конфиге опишите резолвер.http://nginx.org/ru/docs/http/ngx_http_core_module.html#resolver пн, 11 апр. 2016 г. в 18:04, Den Bozhok :Доброго дня! Попробовал использовать map для выбора бэкенда, что бы затем передавать ее в proxy_pass, но при передаче переменной в proxy_pass nginx не может ее разрезолвить в итоговое значение. конфигурация: geo $backend1 {default "long-host-name1.com";}geo $backend2 {default "long-host-name2.com";} map $http_x_backend $backend {"host1" $backend1;"host2" $backend2;} server {listen 80; location / {proxy_pass http://$backend;}} При этом я получаю ошибку:$backend could not be resolved (2: Server failure) Я что-то делаю не так или у nginx нет такой возможности?Благодарю! nginx -Vnginx version: nginx/1.9.10built by gcc 4.9.2 (Debian 4.9.2-10)built with OpenSSL 1.0.1k 8 Jan 2015TLS SNI support enabledconfigure arguments:--with-ld-opt=-Wl,-rpath,/usr/local/lib--prefix=/etc/nginx--sbin-path=/usr/sbin/nginx--conf-path=/etc/nginx/nginx.conf--error-log-path=/var/log/nginx/error.log--http-log-path=/var/log/nginx/access.log--pid-path=/var/run/nginx.pid--lock-path=/var/run/nginx.lock--http-client-body-temp-path=/var/cache/nginx/client_temp--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp--http-proxy-temp-path=/var/cache/nginx/proxy_temp--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp--http-scgi-temp-path=/var/cache/nginx/scgi_temp--user=nginx--group=nginx--with-http_ssl_module--with-stream_ssl_module--with-http_realip_module--with-http_addition_module--with-http_gunzip_module--with-http_gzip_static_module--with-http_v2_module--with-threads--with-http_geoip_module--with-ipv6--with-http_stub_status_module--add-module=/opt/ngx_devel_kit-0.2.19--add-module=/opt/lua-nginx-module-0.10.0 ___nginx-ru mailing listnginx-ru@nginx.orghttp://mailman.nginx.org/mailman/listinfo/nginx-ru,___nginx-ru mailing listnginx-ru@nginx.orghttp://mailman.nginx.org/mailman/listinfo/nginx-ru___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: переменные в map -> proxy_pass

2016-04-11 Пенетрантность kpoxa
В конфиге опишите резолвер.
http://nginx.org/ru/docs/http/ngx_http_core_module.html#resolver

пн, 11 апр. 2016 г. в 18:04, Den Bozhok :

> Доброго дня!
>
> Попробовал использовать map для выбора бэкенда, что бы затем передавать ее
> в proxy_pass, но при передаче переменной в proxy_pass nginx не может ее
> разрезолвить в итоговое значение.
>
> конфигурация:
>
>
> geo $backend1 {
> default "long-host-name1.com";
> }
> geo $backend2 {
> default "long-host-name2.com";
> }
>
> map $http_x_backend $backend {
> "host1" $backend1;
> "host2" $backend2;
> }
>
> server {
> listen 80;
>
> location / {
> proxy_pass http://$backend;
> }
> }
>
>
> При этом я получаю ошибку:
> $backend could not be resolved (2: Server failure)
>
> Я что-то делаю не так или у nginx нет такой возможности?
> Благодарю!
>
> nginx -V
> nginx version: nginx/1.9.10
> built by gcc 4.9.2 (Debian 4.9.2-10)
> built with OpenSSL 1.0.1k 8 Jan 2015
> TLS SNI support enabled
> configure arguments:
> --with-ld-opt=-Wl,-rpath,/usr/local/lib
> --prefix=/etc/nginx
> --sbin-path=/usr/sbin/nginx
> --conf-path=/etc/nginx/nginx.conf
> --error-log-path=/var/log/nginx/error.log
> --http-log-path=/var/log/nginx/access.log
> --pid-path=/var/run/nginx.pid
> --lock-path=/var/run/nginx.lock
> --http-client-body-temp-path=/var/cache/nginx/client_temp
> --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
> --http-proxy-temp-path=/var/cache/nginx/proxy_temp
> --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
> --http-scgi-temp-path=/var/cache/nginx/scgi_temp
> --user=nginx
> --group=nginx
> --with-http_ssl_module
> --with-stream_ssl_module
> --with-http_realip_module
> --with-http_addition_module
> --with-http_gunzip_module
> --with-http_gzip_static_module
> --with-http_v2_module
> --with-threads
> --with-http_geoip_module
> --with-ipv6
> --with-http_stub_status_module
> --add-module=/opt/ngx_devel_kit-0.2.19
> --add-module=/opt/lua-nginx-module-0.10.0
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: reuseport в конфигах nginx

2016-04-11 Пенетрантность Валентин Бартенев
On Monday 11 April 2016 16:59:08 navern wrote:
> Да, я читал эту статью.
> 
> Проблема в том, что нам как раз нужен негативный побочный эффект:) 
> Необходимо, чтобы одновременно можно было запустить два nginx'а. Этого 
> можно добиться если везде указать reuseport, но только один раз.
> 

А можно подробнее, зачем такое нужно?


> А можно подробнее о том как лучше решить эту задачу? Какой правильный 
> флоу должен быть? Выставлять везде опцию в конфигах(каждый раз) и 
> убирать проверку на это при парсинге конфигурации?
> 

Правильный Максим уже описал, необходимо проверять все опции, и выдавать
ошибку, только если они отличаются.

Но я лишь о том, что если уж править исходники затем, чтобы применить
опцию "reuseport" по умолчанию, то править функцию парсинга директивы
ngx_http_core_listen(), а не вмешиваться в функционирование.

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: reuseport в конфигах nginx

2016-04-11 Пенетрантность Evgeniy Berdnikov
On Mon, Apr 11, 2016 at 04:59:08PM +0300, navern wrote:
> Проблема в том, что нам как раз нужен негативный побочный эффект:)
> Необходимо, чтобы одновременно можно было запустить два nginx'а. Этого можно
> добиться если везде указать reuseport, но только один раз.

 А зачем нужны 2 копии сервера на одном порту? Какому из них должны
 доставаться входящие соединения, и есть ли основания считать, что
 можно дать точный ответ на этот вопрос?
-- 
 Eugene Berdnikov

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

Re: передача в upstream dns имени хоста

2016-04-11 Пенетрантность nrr
писал же в предыдущем посте, не подходит этот вариант:
>> Эти варианты не подходят в location /loc/ :
>> proxy_set_header HOST $proxy_host; ## дает upstr1
>> proxy_set_header HOST $host; ## дает имя хоста по какому обратился юзер
(example.org)
>> proxy_set_header HOST $hostname; ## дает имя хоста сервера

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,266089,266092#msg-266092

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

переменные в map -> proxy_pass

2016-04-11 Пенетрантность Den Bozhok
Доброго дня! Попробовал использовать map для выбора бэкенда, что бы затем передавать ее в proxy_pass, но при передаче переменной в proxy_pass nginx не может ее разрезолвить в итоговое значение. конфигурация: geo $backend1 {default "long-host-name1.com";}geo $backend2 {default "long-host-name2.com";} map $http_x_backend $backend {"host1" $backend1;"host2" $backend2;} server {listen 80; location / {proxy_pass http://$backend;}} При этом я получаю ошибку:$backend could not be resolved (2: Server failure) Я что-то делаю не так или у nginx нет такой возможности?Благодарю! nginx -Vnginx version: nginx/1.9.10built by gcc 4.9.2 (Debian 4.9.2-10)built with OpenSSL 1.0.1k 8 Jan 2015TLS SNI support enabledconfigure arguments:--with-ld-opt=-Wl,-rpath,/usr/local/lib--prefix=/etc/nginx--sbin-path=/usr/sbin/nginx--conf-path=/etc/nginx/nginx.conf--error-log-path=/var/log/nginx/error.log--http-log-path=/var/log/nginx/access.log--pid-path=/var/run/nginx.pid--lock-path=/var/run/nginx.lock--http-client-body-temp-path=/var/cache/nginx/client_temp--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp--http-proxy-temp-path=/var/cache/nginx/proxy_temp--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp--http-scgi-temp-path=/var/cache/nginx/scgi_temp--user=nginx--group=nginx--with-http_ssl_module--with-stream_ssl_module--with-http_realip_module--with-http_addition_module--with-http_gunzip_module--with-http_gzip_static_module--with-http_v2_module--with-threads--with-http_geoip_module--with-ipv6--with-http_stub_status_module--add-module=/opt/ngx_devel_kit-0.2.19--add-module=/opt/lua-nginx-module-0.10.0 ___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: передача в upstream dns имени хоста

2016-04-11 Пенетрантность Vadim A. Misbakh-Soloviov
proxy_set_header Host $host;
?

-- 
wbr,
mva

signature.asc
Description: This is a digitally signed message part.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: передача в upstream dns имени хоста

2016-04-11 Пенетрантность nrr
вот здесь
http://serverfault.com/questions/598202/make-nginx-to-pass-hostname-of-the-upstream-when-reverseproxying
описан немного кривой способ:

server {
  listen  8001 default_server;
  server_name web1.example.com;
  location / {
proxy_pass   http://web1.local:80;
proxy_set_header Host web1.local:80;
  }
}

server {
  listen  8002 default_server;
  server_name web2.example.com;
  location / {
proxy_pass   http://web2.local:80;
proxy_set_header Host web2.local:80;
  }
}

server {
  listen  8003 default_server;
  server_name web3.example.com;
  location / {
proxy_pass   http://web3.local:80;
proxy_set_header Host web3.local:80;
  }
}

upstream main {
  server 127.0.0.1:8001;
  server 127.0.0.1:8002;
  server 127.0.0.1:8003;
}

server {
  listen  80;
  server_name example.com;
  location / {
proxy_pass http://main;
  }
}

но есть ли проще?

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,266089,266090#msg-266090

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

передача в upstream dns имени хоста

2016-04-11 Пенетрантность nrr
Добрый день!

имеется конфиг:

upstream upstr1 {
server host1.example.com:80;
server host2.example.com:80;
}
location /loc/ {
proxy_pass http://upstr1/;
}

не подскажете есть ли реальный и простой способ передачи в upstream сервер
имени хоста по какому было обращение?

Т.е. если Nginx выбрал host1.example.com, то передавать туда
host1.example.com, а не IP адрес как это сейчас работает.

Смысл такой, что
server host1.example.com:80;
server host2.example.com:80;
находятся на одном сервере,
и нужно по разному обрабатывать запросы в зависимости от hostname upstream

Эти варианты не подходят в location /loc/ :
proxy_set_header HOST $proxy_host; ## дает upstr1
proxy_set_header HOST $host; ## дает имя хоста по какому 
обратился юзер
(example.org)
proxy_set_header HOST $hostname; ## дает имя хоста сервера

Спасибо!

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

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

Re: reuseport в конфигах nginx

2016-04-11 Пенетрантность navern

Да, я читал эту статью.

Проблема в том, что нам как раз нужен негативный побочный эффект:) 
Необходимо, чтобы одновременно можно было запустить два nginx'а. Этого 
можно добиться если везде указать reuseport, но только один раз.


А можно подробнее о том как лучше решить эту задачу? Какой правильный 
флоу должен быть? Выставлять везде опцию в конфигах(каждый раз) и 
убирать проверку на это при парсинге конфигурации?


On 11.04.2016 16:49, Валентин Бартенев wrote:

On Monday 11 April 2016 15:14:10 navern wrote:

setsockopt есть всего в двух местах и в одном он нужен, чтобы апгрейдить
сокеты без reuseport'а до reuseport'а, если я правильно понимаю.

Подобный хак позволил запустить одновременно два nginx'а, так что как
минимум что-то полезное он делает.

Это, как раз, негативный побочный эффект.

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

Подробности тут:
https://habrahabr.ru/post/259403/


По опции грепал и там действительно много вхождений, на что стоит
обратить внимание? У нас предполагается включенный reuseport всегда.

В общем открыт к предложениям как сделать лучше.


Самым простым решением было бы выставить флаг на этапе парсинга директивы
listen и не вмешиваться в логику обработки флага.

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru


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

Re: reuseport в конфигах nginx

2016-04-11 Пенетрантность Валентин Бартенев
On Monday 11 April 2016 15:14:10 navern wrote:
> setsockopt есть всего в двух местах и в одном он нужен, чтобы апгрейдить 
> сокеты без reuseport'а до reuseport'а, если я правильно понимаю.
> 
> Подобный хак позволил запустить одновременно два nginx'а, так что как 
> минимум что-то полезное он делает.

Это, как раз, негативный побочный эффект.

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

Подробности тут:
https://habrahabr.ru/post/259403/

> 
> По опции грепал и там действительно много вхождений, на что стоит 
> обратить внимание? У нас предполагается включенный reuseport всегда.
> 
> В общем открыт к предложениям как сделать лучше.
> 

Самым простым решением было бы выставить флаг на этапе парсинга директивы
listen и не вмешиваться в логику обработки флага.

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: reuseport в конфигах nginx

2016-04-11 Пенетрантность navern
setsockopt есть всего в двух местах и в одном он нужен, чтобы апгрейдить 
сокеты без reuseport'а до reuseport'а, если я правильно понимаю.


Подобный хак позволил запустить одновременно два nginx'а, так что как 
минимум что-то полезное он делает.


По опции грепал и там действительно много вхождений, на что стоит 
обратить внимание? У нас предполагается включенный reuseport всегда.


В общем открыт к предложениям как сделать лучше.

On 09.04.2016 04:43, Валентин Бартенев wrote:

On Friday 08 April 2016 22:32:12 Vadim A. Misbakh-Soloviov wrote:

у вас почтовый клиент понавставлял лишних переносов строк. Можно было,
наверное, аттачем патч приложить

// ну, или без html отправлять

Лучше не стоит.

Простой grep по исходникам может показать, что это не единственное место
где обрабатывается опция reuseport, и иного эффекта, кроме негативного, от
данного патча не будет (в частности опция reuseport так и не заработает
правильно на остальных сокетах).

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru


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

Re: nginx 1.9.14 & upload-progress-module

2016-04-11 Пенетрантность Валентин Бартенев
On Saturday 09 April 2016 13:56:03 deniss wrote:
> После обновления nginx не отображается прогрессбар при аплоаде файла.
> В логах:
> 
> 2016/04/09 20:47:37 [debug] 8670#0: *40 malloc: 01249020:16
> 2016/04/09 20:47:37 [debug] 8670#0: *40 upload-progress: get_tracking_id
> found args: fb2573fbf0cdbd7a3e20f5c00f7f6da4
> 2016/04/09 20:47:37 [debug] 8670#0: *40 malloc: 01249040:48
> 2016/04/09 20:47:37 [debug] 8670#0: *40 upload-progress: read_event_handler
> found id: fb2573fbf0cdbd7a3e20f5c00f7f6da4
> 2016/04/09 20:47:37 [debug] 8670#0: *40 http read client request body
> 2016/04/09 20:47:37 [debug] 8670#0: *40 recv: fd:28 2896 of 3507
> 2016/04/09 20:47:37 [debug] 8670#0: *40 http client request body recv 2896
> 2016/04/09 20:47:37 [debug] 8670#0: *40 http client request body rest
> 941014992
> 2016/04/09 20:47:37 [debug] 8670#0: *40 recv: fd:28 -1 of 611
> 2016/04/09 20:47:37 [debug] 8670#0: *40 recv() not ready (11: Resource
> temporarily unavailable)
> 2016/04/09 20:47:37 [debug] 8670#0: *40 http client request body recv -2
> 2016/04/09 20:47:37 [debug] 8670#0: *40 http client request body rest
> 941014992
> 2016/04/09 20:47:37 [debug] 8670#0: *40 event timer: 28, old: 1460227657757,
> new: 1460227657757
> 2016/04/09 20:47:37 [debug] 8670#0: *40 http run request:
> "/doupload/?X-Progress-ID=fb2573fbf0cdbd7a3e20f5c00f7f6da4"
> 2016/04/09 20:47:37 [debug] 8670#0: *40 upload-progress:
> ngx_http_uploadprogress_event_handler
> 2016/04/09 20:47:37 [debug] 8670#0: *40 upload-progress: get_tracking_id
> 2016/04/09 20:47:37 [debug] 8670#0: *40 upload-progress: get_tracking_id no
> header found
> 2016/04/09 20:47:37 [debug] 8670#0: *40 upload-progress: get_tracking_id no
> header found, args found
> 2016/04/09 20:47:37 [debug] 8670#0: *40 upload-progress: get_tracking_id
> found args: X-Progress-ID=fb2573fbf0cdbd7a3e20f5c00f7f6da4 HTTP/1.1
> 
> Подскажите в где копать?
> Спасибо!
> 

Копать в сторону HTML5 и XMLHttpRequest 2.

--
Валентин Бартенев

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