Re: переменные в map -> proxy_pass
Благодарю за ответ!Однако, резолвер описан, и все-равно ошибка присутствует: 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
В конфиге опишите резолвер. 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
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
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 имени хоста
писал же в предыдущем посте, не подходит этот вариант: >> Эти варианты не подходят в 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
Доброго дня! Попробовал использовать 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 имени хоста
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 имени хоста
вот здесь 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 имени хоста
Добрый день! имеется конфиг: 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
Да, я читал эту статью. Проблема в том, что нам как раз нужен негативный побочный эффект:) Необходимо, чтобы одновременно можно было запустить два 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
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
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
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