Использование env VARIABLE без дополнительных модулей?
Добрый день! Как извесно в конфиг можно прописать нечто эдакое: env VARIABLE = VALUE; причем NGINX, это успешно скушает, даже в отсутствие модулей LUA и PERL, которых нету в стандартной сборке под Винды. Так вот не понятно как достучаться до этой переменной в конфиге, т.е. ее использовать. Типа (без LUA и PERL!): set NEW_VARIABLE env{VARIABLE} ; Из документации извесно, что: nginx удаляет все переменные окружения, унаследованные от своего родительского процесса, кроме переменной TZ. Эта директива позволяет сохранить часть унаследованных переменных, поменять им значения или же создать новые переменные окружения. Эти переменные затем: ... используются рабочими процессами Возможно ли как нибудь эту переменную (TZ) прочитать/получить/присвоить другой переменной? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,260213,260213#msg-260213 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: referer https-http
На этих uri нельзя использовать небезопасное соединение. :( On 07/10/2015 02:11 PM, VovansystemS wrote: добрый день, Сайт имеет две версии http и https. https используется только для определенных uri, с которых запросы редиректятся на http. Соответственно на http не поступает оригинальный реферер (тот который приходит на https). Нужно его как-то получать в http запросах уже после редиректа. попробуйте использовать тег meta name=referrer content=unsafe-url, подробнее читайте тут: http://www.w3.org/TR/referrer-policy/ ___ 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: referer https-http
На этих uri нельзя использовать небезопасное соединение. :( я не предлагаю Вам использовать небезопасное соединение на этих uri, я предлагаю Вам изменить политику передачи реферера браузером при переходе с ресурса, доступного по протоколу https на протокол http, путём добавления специального тега в начало страницы. но теперь я прочитал ещё раз внимательно и понял, Вам нужно сохранить и заново передать *оригинальный* реферер :) поэтому написанное выше Вам не поможет если редирект осуществляется в браузере пользователя, то наверное контролировать (фактически, заспуфить) реферер не получится, можно, конечно передать через параметры.. но наверное самый простой способ использовать proxy_pass ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Использование env VARIABLE без дополнительных модулей?
Вот, честно, советую вам вместо велосипедостроения на основе костылей и отстреливания ног всё-таки либо пересобрать NgX с нужными модулями (или посмотрите в сторону OpenResty, например), или не использовать Windows для того, для чего она не предназначена и развернуть NgX на нормальной операционной системе. Потому что ваш ход мыслей (учитывая предыдущий тред и ход мыслей в этом) ни к чему хорошему не приведут и то, что вы хотите — отстрелит вам ногу рано или поздно. -- Best regards, 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
Высокий IO на серверах с nginx
Добрый день, Второй день наблюдаю проблему с высоким IO на серверах с nginx при не очень большой нагрузке. Схема такая - 11 серверов с nginx и tomcat. Nginx на каждому сервере принимает трафик от CloudFlare CDN, большую часть отдаёт из кеша, остальное балансирует на томкаты (и ещё один статический файлик отдаёт сам). Всё было замечательно до вчера, трафик в пике был до 40 мегабайтов в секунду, 40к параллельных соединений и ~1500 запросов в секунду на каждом из серверов. Вчера же трафик подскочил раза в полтора (сбрасывали кеш на CloudFlare и сами запросы тоже поменялись), резко выроз IO на сервере (раньше его вообще практически не было, а стало около 15-20%) и всё начало тупить. Изначально думали на диск, но отключение логов практически никак не повлияло. В dmesg стали вылезать сообщения про synflood, увеличили бэклоги как в nginx, так и в sysctl, сообщения про synflood пропали, но проблема с IO осталась. Немного помогло отключение лоад-балансинга в nginx, теперь каждый nginx проксирует на локальный томкат. Нагрузка на сеть понизилась, IO понизилось, но всё равно осталось. Трафик с тех пор понизился даже ниже, чем был до проблемы, сейчас около 1100 запросов в секунду. Но IO осталось. Nginx даже иногда по нескольку секунд отвечает на запросы к странице stub_status. Пробовали разделять сервера с tomcat и nginx, IO оставалось на стороне nginx. Был бы очень признателен, если бы кто-нибудь подсказал хотя бы куда копать. Потому что уже вроде как чем только не пробовали. Спасибо заранее! Конфиги следующие: nginx.conf: user nginx; worker_processes 8; worker_rlimit_nofile 512000; worker_rlimit_core 500M; error_log /var/log/nginx/error.log; pid/var/run/nginx.pid; events { worker_connections 256000; } http { include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; log_format main '$remote_addr - $remote_user [$time_local] $request ' '$status $body_bytes_sent $http_referer ' '$http_user_agent $http_x_forwarded_for'; log_format upstream_balancing '$remote_addr - $remote_user [$time_local] ' '$request $status $bytes_sent ' '$http_referer $http_user_agent ' '$upstream_addr $upstream_response_time $geoip_country_code/$http_cf_ipcountry $http_host $upstream_cache_status ' '$http_cf_connecting_ip'; log_format ub_cloudflare '$http_cf_connecting_ip - $remote_user [$time_local] ' '$request $status $bytes_sent ' '$http_referer $http_user_agent ' '$upstream_addr $upstream_response_time $geoip_country_code/$http_cf_ipcountry $http_host $upstream_cache_status ' '$remote_addr $cookie___cfduid $cookie_uid'; access_log /var/log/nginx/access.log main; sendfileon; keepalive_timeout 65; proxy_cache_methods GET; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } virtual host: server { listen 1.1.1.1:80; listen 1.1.1.1:443 ssl; ssl_certificate /etc/nginx/ssl/cert.crt; ssl_certificate_key /etc/nginx/ssl/key.key; server_name example.com; proxy_set_header clientCountryCode $http_cf_ipcountry ; proxy_ignore_headers Set-Cookie; proxy_hide_header Set-Cookie; proxy_next_upstream error timeout http_500; location / { deny all; } location /manager { proxy_pass http://127.0.0.1:5885; } location /crossdomain.xml { root /tomcat/static_xml; expires 31d; } location ~ ^(/display.htm)$ { proxy_pass http://127.0.0.1:5885/banners/$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 2h; expires 24h; } location ~ ^(/secure.jsp)$ { proxy_pass http://127.0.0.1:5885/banners/mojo/$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 2h; expires 12h; } location ~ ^(/hela.jsp)$ { proxy_pass http://127.0.0.1:5885/banners/hela$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 2h; expires 12h; } location ~ ^(/hela.exe)$ { proxy_pass http://127.0.0.1:5885/banners/hela$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 24h; } location /wl/ba.jsp { proxy_pass http://127.0.0.1:5885/banners/wl/ba.jsp; #proxy_cache_key proxy_cache_key; proxy_cache exe_cache; proxy_cache_valid 200 48h; expires 1w; } location /wl/po.jsp { proxy_pass http://127.0.0.1:5885/banners/wl/po.jsp; proxy_cache exe_cache; proxy_cache_valid 200 48h; expires 1w; } location /tg.jsp { proxy_pass http://127.0.0.1:5885/banners/ba/tg.jsp; #proxy_cache_key proxy_cache_key; proxy_cache_key $http_host$scheme$proxy_host$uri$is_args$arg_ger$arg_cst$arg__v$arg_t;
Re: Высокий IO на серверах с nginx
11 июля 2015 г., 17:09 пользователь Alexey Malov scukon...@gmail.com написал: Добрый день, Второй день наблюдаю проблему с высоким IO на серверах с nginx при не очень большой нагрузке. Схема такая - 11 серверов с nginx и tomcat. Nginx на каждому сервере принимает трафик от CloudFlare CDN, большую часть отдаёт из кеша, остальное балансирует на томкаты (и ещё один статический файлик отдаёт сам). Всё было замечательно до вчера, трафик в пике был до 40 мегабайтов в секунду, 40к параллельных соединений и ~1500 запросов в секунду на каждом из серверов. Вчера же трафик подскочил раза в полтора (сбрасывали кеш на CloudFlare и сами запросы тоже поменялись), резко выроз IO на сервере (раньше его вообще практически не было, а стало около 15-20%) и всё начало тупить. Изначально думали на диск, но отключение логов практически никак не повлияло. В dmesg стали вылезать сообщения про synflood, увеличили бэклоги как в nginx, так и в sysctl, сообщения про synflood пропали, но проблема с IO осталась. Немного помогло отключение лоад-балансинга в nginx, теперь каждый nginx проксирует на локальный томкат. Нагрузка на сеть понизилась, IO понизилось, но всё равно осталось. Трафик с тех пор понизился даже ниже, чем был до проблемы, сейчас около 1100 запросов в секунду. Но IO осталось. Nginx даже иногда по нескольку секунд отвечает на запросы к странице stub_status. Пробовали разделять сервера с tomcat и nginx, IO оставалось на стороне nginx. Был бы очень признателен, если бы кто-нибудь подсказал хотя бы куда копать. Потому что уже вроде как чем только не пробовали. Спасибо заранее! Конфиги следующие: nginx.conf: user nginx; worker_processes 8; worker_rlimit_nofile 512000; worker_rlimit_core 500M; error_log /var/log/nginx/error.log; pid/var/run/nginx.pid; events { worker_connections 256000; } http { include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; log_format main '$remote_addr - $remote_user [$time_local] $request ' '$status $body_bytes_sent $http_referer ' '$http_user_agent $http_x_forwarded_for'; log_format upstream_balancing '$remote_addr - $remote_user [$time_local] ' '$request $status $bytes_sent ' '$http_referer $http_user_agent ' '$upstream_addr $upstream_response_time $geoip_country_code/$http_cf_ipcountry $http_host $upstream_cache_status ' '$http_cf_connecting_ip'; log_format ub_cloudflare '$http_cf_connecting_ip - $remote_user [$time_local] ' '$request $status $bytes_sent ' '$http_referer $http_user_agent ' '$upstream_addr $upstream_response_time $geoip_country_code/$http_cf_ipcountry $http_host $upstream_cache_status ' '$remote_addr $cookie___cfduid $cookie_uid'; access_log /var/log/nginx/access.log main; sendfileon; keepalive_timeout 65; proxy_cache_methods GET; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } virtual host: server { listen 1.1.1.1:80; listen 1.1.1.1:443 ssl; ssl_certificate /etc/nginx/ssl/cert.crt; ssl_certificate_key /etc/nginx/ssl/key.key; server_name example.com; proxy_set_header clientCountryCode $http_cf_ipcountry ; proxy_ignore_headers Set-Cookie; proxy_hide_header Set-Cookie; proxy_next_upstream error timeout http_500; location / { deny all; } location /manager { proxy_pass http://127.0.0.1:5885; } location /crossdomain.xml { root /tomcat/static_xml; expires 31d; } location ~ ^(/display.htm)$ { proxy_pass http://127.0.0.1:5885/banners/$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 2h; expires 24h; } location ~ ^(/secure.jsp)$ { proxy_pass http://127.0.0.1:5885/banners/mojo/$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 2h; expires 12h; } location ~ ^(/hela.jsp)$ { proxy_pass http://127.0.0.1:5885/banners/hela$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 2h; expires 12h; } location ~ ^(/hela.exe)$ { proxy_pass http://127.0.0.1:5885/banners/hela$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 24h; } location /wl/ba.jsp { proxy_pass http://127.0.0.1:5885/banners/wl/ba.jsp; #proxy_cache_key proxy_cache_key; proxy_cache exe_cache; proxy_cache_valid 200 48h; expires 1w; } location /wl/po.jsp { proxy_pass http://127.0.0.1:5885/banners/wl/po.jsp; proxy_cache exe_cache; proxy_cache_valid 200 48h; expires 1w; } location
Re: Высокий IO на серверах с nginx
Как выяснилось, IO было дисковое, перенос cache в RAM всё излечил. Странно только, почему раньше работало. Сейчас вариантов URL стало даже меньше. И трафик опустился. 11 июля 2015 г., 17:57 пользователь Alexey Malov scukon...@gmail.com написал: 11 июля 2015 г., 17:09 пользователь Alexey Malov scukon...@gmail.com написал: Добрый день, Второй день наблюдаю проблему с высоким IO на серверах с nginx при не очень большой нагрузке. Схема такая - 11 серверов с nginx и tomcat. Nginx на каждому сервере принимает трафик от CloudFlare CDN, большую часть отдаёт из кеша, остальное балансирует на томкаты (и ещё один статический файлик отдаёт сам). Всё было замечательно до вчера, трафик в пике был до 40 мегабайтов в секунду, 40к параллельных соединений и ~1500 запросов в секунду на каждом из серверов. Вчера же трафик подскочил раза в полтора (сбрасывали кеш на CloudFlare и сами запросы тоже поменялись), резко выроз IO на сервере (раньше его вообще практически не было, а стало около 15-20%) и всё начало тупить. Изначально думали на диск, но отключение логов практически никак не повлияло. В dmesg стали вылезать сообщения про synflood, увеличили бэклоги как в nginx, так и в sysctl, сообщения про synflood пропали, но проблема с IO осталась. Немного помогло отключение лоад-балансинга в nginx, теперь каждый nginx проксирует на локальный томкат. Нагрузка на сеть понизилась, IO понизилось, но всё равно осталось. Трафик с тех пор понизился даже ниже, чем был до проблемы, сейчас около 1100 запросов в секунду. Но IO осталось. Nginx даже иногда по нескольку секунд отвечает на запросы к странице stub_status. Пробовали разделять сервера с tomcat и nginx, IO оставалось на стороне nginx. Был бы очень признателен, если бы кто-нибудь подсказал хотя бы куда копать. Потому что уже вроде как чем только не пробовали. Спасибо заранее! Конфиги следующие: nginx.conf: user nginx; worker_processes 8; worker_rlimit_nofile 512000; worker_rlimit_core 500M; error_log /var/log/nginx/error.log; pid/var/run/nginx.pid; events { worker_connections 256000; } http { include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; log_format main '$remote_addr - $remote_user [$time_local] $request ' '$status $body_bytes_sent $http_referer ' '$http_user_agent $http_x_forwarded_for'; log_format upstream_balancing '$remote_addr - $remote_user [$time_local] ' '$request $status $bytes_sent ' '$http_referer $http_user_agent ' '$upstream_addr $upstream_response_time $geoip_country_code/$http_cf_ipcountry $http_host $upstream_cache_status ' '$http_cf_connecting_ip'; log_format ub_cloudflare '$http_cf_connecting_ip - $remote_user [$time_local] ' '$request $status $bytes_sent ' '$http_referer $http_user_agent ' '$upstream_addr $upstream_response_time $geoip_country_code/$http_cf_ipcountry $http_host $upstream_cache_status ' '$remote_addr $cookie___cfduid $cookie_uid'; access_log /var/log/nginx/access.log main; sendfileon; keepalive_timeout 65; proxy_cache_methods GET; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } virtual host: server { listen 1.1.1.1:80; listen 1.1.1.1:443 ssl; ssl_certificate /etc/nginx/ssl/cert.crt; ssl_certificate_key /etc/nginx/ssl/key.key; server_name example.com; proxy_set_header clientCountryCode $http_cf_ipcountry ; proxy_ignore_headers Set-Cookie; proxy_hide_header Set-Cookie; proxy_next_upstream error timeout http_500; location / { deny all; } location /manager { proxy_pass http://127.0.0.1:5885; } location /crossdomain.xml { root /tomcat/static_xml; expires 31d; } location ~ ^(/display.htm)$ { proxy_pass http://127.0.0.1:5885/banners/$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 2h; expires 24h; } location ~ ^(/secure.jsp)$ { proxy_pass http://127.0.0.1:5885/banners/mojo/$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 2h; expires 12h; } location ~ ^(/hela.jsp)$ { proxy_pass http://127.0.0.1:5885/banners/hela$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 2h; expires 12h; } location ~ ^(/hela.exe)$ { proxy_pass http://127.0.0.1:5885/banners/hela$1$is_args$args; proxy_cache exe_cache; proxy_cache_valid 24h; } location /wl/ba.jsp { proxy_pass http://127.0.0.1:5885/banners/wl/ba.jsp; #proxy_cache_key proxy_cache_key; proxy_cache exe_cache;