From mdounin at mdounin.ru Tue Jul 1 00:01:00 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 1 Jul 2014 04:01:00 +0400 Subject: =?UTF-8?B?UmU6IE5naW54INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIDQ5OSDQv9GA0Lgg0L/RgNC+?= =?UTF-8?B?0LrRgdC40YDQvtCy0LDQvdC40Lgg0L/QvtGB0LvQtSDQvdC10YHQutC+0Ls=?= =?UTF-8?B?0YzQutC40YUg0YfQsNGB0L7QsiDRgNCw0LHQvtGC0Ys=?= In-Reply-To: <28531238.20140630132739@cpslabs.net> References: <28531238.20140630132739@cpslabs.net> Message-ID: <20140701000100.GO1849@mdounin.ru> Hello! On Mon, Jun 30, 2014 at 01:27:39PM +0400, Andrey Ilyin wrote: > Всем добрый день! > > Столкнулся с довольно странной проблемой на боевом сервере. > > Через ~4-6 часов работы nginx перестает проксировать запросы на второй > сервер и возвращает статус 499. > > При этом все запросы, которые проксируются на этом же сервере на > Apache отрабатывают нормально. > > После reload или restart все возвращается в нормальное русло. > > Проблема появилась после того как переехали на новый сервер и обновили > nginx с версии 1.4 до 1.7.1. > > В debug log'e > http run request > http upstream check client, write event:0 > epoll_wait() reported that client prematurely closed connection, so upstream connection is closed too while connecting to upstream > > > Подскажите, пожалуйста, возможно кто-то уже сталкивался с данной > проблемой, как можно это решить? Код 499 означает, что клиент устал ждать и закрыл соединение. Вероятнее всего из-за того, что от "второго" сервера долго не приходит ответ. > Сервер работает под ОС Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3+deb7u2 x86_64 GNU/Linux > nginx version: nginx/1.7.1 > > Включенные модули nginx'a можно посмотреть тут > https://www.dropbox.com/s/uotxbtyks0xb15j/nginx-modules.txt > > Дебаг логи > https://www.dropbox.com/s/avjetz8wcrx6fdy/filtered_bad_renamed.log Судя по логу, не устанавливается соединение с бекендом: 2014/06/30 06:39:20 [debug] 24188#0: *13861 connect to 123.123.123.123:80, fd:41 #13864 2014/06/30 06:39:20 [debug] 24188#0: *13861 http upstream connect: -2 2014/06/30 06:39:20 [debug] 24188#0: *13861 posix_memalign: 00000000023F01B0:128 @16 2014/06/30 06:39:20 [debug] 24188#0: *13861 event timer add: 41: 90000:1404110450952 И, судя по тому, что таймер на установление соединения выставлен в 90 секунд, с этой проблемой уже один раз пытались бороться - но, видимо, симптоматически. Смотрите, что у вас происходит на бекенде, он скорее всего банально перегружен и не справляется с нагрузкой. -- Maxim Dounin http://nginx.org/ From mdounin at mdounin.ru Tue Jul 1 00:17:52 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 1 Jul 2014 04:17:52 +0400 Subject: =?UTF-8?B?UmU6INCd0LXQv9C+0L3Rj9GC0L3QvtC1INC/0L7QstC10LTQtdC90LjQtSDRgNCw?= =?UTF-8?B?0LfQvNC10YDQsCDQutGN0YjQsA==?= In-Reply-To: <5516cbf6bf6454ba80ef87f05e52f6e1.NginxMailingListRussian@forum.nginx.org> References: <5516cbf6bf6454ba80ef87f05e52f6e1.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140701001752.GQ1849@mdounin.ru> Hello! On Mon, Jun 30, 2014 at 08:44:53AM -0400, Давид Мзареулян wrote: > Добрый день! > > nginx/1.4.6 под ubuntu 14.04, определены две зоны кэша на 100-гигабайтном > диске: > > proxy_cache_path /mnt1/cache1 levels=2:2 keys_zone=previewCache1:512m > max_size=25g inactive=10y; > proxy_cache_path /mnt1/cache2 levels=2:2 keys_zone=previewCache2:512m > max_size=70g inactive=10y; > > Каталог первой зоны (/mnt1/cache1) сейчас имеет размер 26G, что нормально и > близко к заданному. А вот размер каталога второй зоны (/mnt1/cache2) > стабилизируется на 50-52G и дальше не растёт. Более того, если во втором > proxy_cache_path задать max_size=60g, то размер каталога уменьшается до > 42G. > > В чём тут может быть дело? Размер считается в блоках, дабы получить цифру, максимально близкую к реально занимаемому на диске пространству. Если блоки большие, а файлы - маленькие, это может быть причиной расхождения наблюдаемых цифр. -- Maxim Dounin http://nginx.org/ From mdounin at mdounin.ru Tue Jul 1 00:24:34 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 1 Jul 2014 04:24:34 +0400 Subject: rewrite xbt In-Reply-To: <0df66cb59c6b55f79a5446a962f871f2.NginxMailingListRussian@forum.nginx.org> References: <0df66cb59c6b55f79a5446a962f871f2.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140701002434.GR1849@mdounin.ru> Hello! On Mon, Jun 30, 2014 at 06:02:14PM -0400, Klim81 wrote: > proxy_pass отнимает у меня приблизительно 15-20% нагрузки, поэтому его не > предлагать... > http://tr.site.com/0218afaf304828a2a9492a7478ac668/announce оригинал. > rewrite ^/ http://ip/announce permanent; некорректно отрабатывался. > rewrite ^ http://ip$request_uri permanent; приводил ошибку в клиенте об > многочисленных переходах. > Пожалуйста, подскажите адекватный rewrite. > Заранее спасибо. Хороший rewrite, например, такой: rewrite ^ http://example.com/? redirect; Но вам, вероятно, нужно сделать что-то конкретное. К сожалению, вы не рассказали, что же именно вы хотите сделать. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Tue Jul 1 00:47:30 2014 From: nginx-forum at nginx.us (Klim81) Date: Mon, 30 Jun 2014 20:47:30 -0400 Subject: rewrite xbt In-Reply-To: <20140701002434.GR1849@mdounin.ru> References: <20140701002434.GR1849@mdounin.ru> Message-ID: <7c641a2d12d16775dbfb015184aa5d47.NginxMailingListRussian@forum.nginx.org> переброску с адреса http://tr.site.com/0218afaf304828a2a9492a7478ac668/announce на http://ip:2710/0218afaf304828a2a9492a7478ac668/announce как-то так. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251323,251336#msg-251336 From mdounin at mdounin.ru Tue Jul 1 01:19:49 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 1 Jul 2014 05:19:49 +0400 Subject: rewrite xbt In-Reply-To: <7c641a2d12d16775dbfb015184aa5d47.NginxMailingListRussian@forum.nginx.org> References: <20140701002434.GR1849@mdounin.ru> <7c641a2d12d16775dbfb015184aa5d47.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140701011949.GW1849@mdounin.ru> Hello! On Mon, Jun 30, 2014 at 08:47:30PM -0400, Klim81 wrote: > переброску с адреса > http://tr.site.com/0218afaf304828a2a9492a7478ac668/announce на > http://ip:2710/0218afaf304828a2a9492a7478ac668/announce как-то так. Если очень надо rewrite, то так: rewrite ^ http://ip:2710$request_uri? redirect; Но последнее время считается, что правильнее делать так: return 302 http://ip:2710$request_uri; (И в том, и в другом случае, постоянное перенаправление вместо временного - расставить по вкусу.) -- Maxim Dounin http://nginx.org/ From a.rogovsky at gmail.com Tue Jul 1 02:42:33 2014 From: a.rogovsky at gmail.com (Andrey Rogovsky) Date: Tue, 1 Jul 2014 05:42:33 +0300 Subject: =?UTF-8?B?0JfQsNCz0LDQtNC+0YfQvdCw0Y8g0L/RgNC+0LHQu9C10LzQsCDRgSDQvtCx0YA=?= =?UTF-8?B?0LDQsdC+0YLQutC+0Lkg0YDQtdCz0YPQu9GP0YDQvdGL0YUg0LLRi9GA0LA=?= =?UTF-8?B?0LbQtdC90LjQuQ==?= Message-ID: Имею следующий конфиг nginx: -- начало -- server { listen 80; server_name mydomain.com; #access_log /var/log/nginx/mydomain.com.access.log main; access_log off; error_log /var/log/nginx/mydomain.com.error.log crit; open_file_cache max=10000 inactive=120s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors off; error_page 558 = @post; location / { limit_req zone=two burst=3 nodelay; proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_redirect off; #proxy_set_header Host $host; proxy_set_header Host 'mydomain.com'; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header UA $uaix; proxy_set_header MSK $mskix; proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code; proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3; proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name; proxy_connect_timeout 10; proxy_send_timeout 10; proxy_read_timeout 10; if ($request_method = POST) { return 558; } } if ($uri ~ "^/script_var/(.+\.js)$") { set $jsname $1; } location ~* /script_var/.+\.(js)$ { root /var/www/mydomain.com; try_files /adv/$geoip_country_code/$jsname /adv/$jsname = 404; } location = /script.php { return 444; } location ~ edit$ { return 444; } location ~ playlist.php$ { proxy_pass http://backend; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header UA $uaix; proxy_set_header MSK $mskix; proxy_connect_timeout 60; proxy_send_timeout 60; proxy_read_timeout 60; } location ~ admin.php$ { allow 91.218.74.202; allow 213.186.118.138; allow 94.232.208.220; allow 176.9.35.227; allow 83.69.224.215; # deny all; proxy_pass http://backend; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header UA $uaix; proxy_set_header MSK $mskix; proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code; proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3; proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name; proxy_connect_timeout 60; proxy_send_timeout 60; proxy_read_timeout 60; } location ~ ^/cgi-bin/.*\.cgi$ { proxy_pass http://backend; proxy_redirect off; } location ~ ^/adv/.*$ { deny all; } location ~ ^/msqlmdmf/(.+\.(?:gif|jpe?g|png|ico|css|zip|tgz|gz|rar|bz2|tar|js))$ { alias /usr/share/phpmyadmin/$1; } # Static files location location ~* ^.+\.(swf|ver|ver|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ { valid_referers none blocked *.mydomain.com mydomain.com; if ($invalid_referer) { return 403; } root /var/www/mydomain.com; expires 10080m; } location /nginx_status { stub_status on; access_log off; allow 91.218.74.202; allow 213.186.118.138; allow 94.232.208.220; allow 212.113.52.4; deny all; } location @post { limit_req zone=two burst=1; set $limit_rate 128k; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_redirect off; #proxy_set_header Host $host; proxy_set_header Host 'mydomain.com'; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header UA $uaix; proxy_set_header MSK $mskix; proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code; proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3; proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name; proxy_connect_timeout 10; proxy_send_timeout 10; proxy_read_timeout 10; proxy_pass http://backend; #return 444; } } -- конец -- В общем все довольно стандартно. При этом запрос к сайту вида http://mydomain.com/actors/Bezrukov обрабатывается нормально: 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script var: "/actors/Bezrukov" 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script regex: "^/script_var/(.+\.js)$" 2014/06/30 19:16:24 [notice] 39999#0: *3009 "^/script_var/(.+\.js)$" does not match "/actors/Bezrukov", client: 188.130.179.10, server: mydomain.com, request: "GET /actors/Bezrukov HTTP /1.1", host: "mydomain.com" 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script if 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script if: false 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: "/" 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: "script.php" 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: "nginx_status" 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "/script_var/.+\.(js)$" 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "edit$" 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "playlist.php$" 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "admin.php$" 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "^/cgi-bin/.*\.cgi$" 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "^/adv/.*$" 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "^/msqlmdmf/(.+\.(?:gif|jpe?g|png|ico|css|zip|tgz|gz|rar|bz2|tar|js))$" 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "^.+\.(swf|ver|ver|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|js)$" 2014/06/30 19:16:24 [debug] 39999#0: *3009 using configuration "/" А вот с запросом вида http://mydomain.com/actors/Bargess-Meredit происходит вот такой глюк: 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script var: "/actors/Bargess-Meredit" 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script regex: "^/script_var/(.+\.js)$" 2014/06/30 19:16:45 [notice] 39996#0: *3523 "^/script_var/(.+\.js)$" does not match "/actors/Bargess-Meredit", client: 188.130.179.10, server: mydomain.com, request: "GET /actors/Bargess-Meredit HTTP/1.1", host: " mydomain.com" 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script if 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script if: false 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: "/" 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: "script.php" 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: "nginx_status" 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: ~ "/script_var/.+\.(js)$" 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: ~ "edit$" 2014/06/30 19:16:45 [debug] 39996#0: *3523 using configuration "edit$" Почему /actors/Bargess-Meredit не обрабатывается корневым локейшеном? Причем я пробовал разные версии nginx - глюк повторяется что на текущем, что на свежескаченном с официального сайта. ОС Debian 6. -------------- next part -------------- An HTML attachment was scrubbed... URL: From tetsio.nainn at gmail.com Tue Jul 1 03:16:58 2014 From: tetsio.nainn at gmail.com (=?UTF-8?B?0Jwu0JAuINCc0L7RhdC90LDRh9C10LLRgdC60LjQuQ==?=) Date: Tue, 1 Jul 2014 13:16:58 +1000 Subject: =?UTF-8?B?UmU6INCX0LDQs9Cw0LTQvtGH0L3QsNGPINC/0YDQvtCx0LvQtdC80LAg0YEg0L4=?= =?UTF-8?B?0LHRgNCw0LHQvtGC0LrQvtC5INGA0LXQs9GD0LvRj9GA0L3Ri9GFINCy0Ys=?= =?UTF-8?B?0YDQsNC20LXQvdC40Lk=?= In-Reply-To: References: Message-ID: location ~ edit$ { return 444; } вот и 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: ~ "edit$" 2014/06/30 19:16:45 [debug] 39996#0: *3523 using configuration "edit$" 01.07.2014 12:42 пользователь "Andrey Rogovsky" написал: > Имею следующий конфиг nginx: > > -- начало -- > > server { > listen 80; > server_name mydomain.com; > #access_log /var/log/nginx/mydomain.com.access.log main; > access_log off; > error_log /var/log/nginx/mydomain.com.error.log crit; > open_file_cache max=10000 inactive=120s; > open_file_cache_valid 30s; > open_file_cache_min_uses 2; > open_file_cache_errors off; > > error_page 558 = @post; > > location / { > limit_req zone=two burst=3 nodelay; > proxy_pass http://backend; > proxy_http_version 1.1; > proxy_set_header Connection ""; > proxy_redirect off; > #proxy_set_header Host $host; > proxy_set_header Host 'mydomain.com'; > proxy_set_header X-Real-IP $remote_addr; > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; > proxy_set_header UA $uaix; > proxy_set_header MSK $mskix; > proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code; > proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3; > proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name; > proxy_connect_timeout 10; > proxy_send_timeout 10; > proxy_read_timeout 10; > > if ($request_method = POST) { > return 558; > } > > } > if ($uri ~ "^/script_var/(.+\.js)$") { > set $jsname $1; > } > location ~* /script_var/.+\.(js)$ { > root /var/www/mydomain.com; > try_files /adv/$geoip_country_code/$jsname /adv/$jsname = 404; > } > location = /script.php { > return 444; > } > location ~ edit$ { > return 444; > } > location ~ playlist.php$ { > proxy_pass http://backend; > proxy_redirect off; > proxy_http_version 1.1; > proxy_set_header Connection ""; > proxy_set_header Host $host; > proxy_set_header X-Real-IP $remote_addr; > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; > proxy_set_header UA $uaix; > proxy_set_header MSK $mskix; > proxy_connect_timeout 60; > proxy_send_timeout 60; > proxy_read_timeout 60; > } > location ~ admin.php$ { > allow 91.218.74.202; > allow 213.186.118.138; > allow 94.232.208.220; > allow 176.9.35.227; > allow 83.69.224.215; > # deny all; > proxy_pass http://backend; > proxy_redirect off; > proxy_http_version 1.1; > proxy_set_header Connection ""; > proxy_set_header Host $host; > proxy_set_header X-Real-IP $remote_addr; > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; > proxy_set_header UA $uaix; > proxy_set_header MSK $mskix; > proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code; > proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3; > proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name; > proxy_connect_timeout 60; > proxy_send_timeout 60; > proxy_read_timeout 60; > } > location ~ ^/cgi-bin/.*\.cgi$ { > proxy_pass http://backend; > proxy_redirect off; > } > location ~ ^/adv/.*$ { > deny all; > } > location ~ > ^/msqlmdmf/(.+\.(?:gif|jpe?g|png|ico|css|zip|tgz|gz|rar|bz2|tar|js))$ { > alias /usr/share/phpmyadmin/$1; > } > # Static files location > location ~* > ^.+\.(swf|ver|ver|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ > { > valid_referers none blocked *.mydomain.com mydomain.com; > if ($invalid_referer) { > return 403; > } > root /var/www/mydomain.com; > expires 10080m; > } > location /nginx_status { > stub_status on; > access_log off; > allow 91.218.74.202; > allow 213.186.118.138; > allow 94.232.208.220; > allow 212.113.52.4; > deny all; > } > > > location @post > { > limit_req zone=two burst=1; > set $limit_rate 128k; > proxy_http_version 1.1; > proxy_set_header Connection ""; > proxy_redirect off; > #proxy_set_header Host $host; > proxy_set_header Host 'mydomain.com'; > proxy_set_header X-Real-IP $remote_addr; > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; > proxy_set_header UA $uaix; > proxy_set_header MSK $mskix; > proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code; > proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3; > proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name; > proxy_connect_timeout 10; > proxy_send_timeout 10; > proxy_read_timeout 10; > proxy_pass http://backend; > #return 444; > } > > } > > -- конец -- > > В общем все довольно стандартно. > > > При этом запрос к сайту вида http://mydomain.com/actors/Bezrukov > обрабатывается нормально: > > 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script var: > "/actors/Bezrukov" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script regex: > "^/script_var/(.+\.js)$" > 2014/06/30 19:16:24 [notice] 39999#0: *3009 "^/script_var/(.+\.js)$" does > not match "/actors/Bezrukov", client: 188.130.179.10, server: mydomain.com, > request: "GET /actors/Bezrukov HTTP > /1.1", host: "mydomain.com" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script if > 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script if: false > 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: "/" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: "script.php" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: "nginx_status" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ > "/script_var/.+\.(js)$" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "edit$" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "playlist.php$" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "admin.php$" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ > "^/cgi-bin/.*\.cgi$" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "^/adv/.*$" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ > "^/msqlmdmf/(.+\.(?:gif|jpe?g|png|ico|css|zip|tgz|gz|rar|bz2|tar|js))$" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ > "^.+\.(swf|ver|ver|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|js)$" > 2014/06/30 19:16:24 [debug] 39999#0: *3009 using configuration "/" > > А вот с запросом вида http://mydomain.com/actors/Bargess-Meredit > происходит вот такой глюк: > > 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script var: > "/actors/Bargess-Meredit" > 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script regex: > "^/script_var/(.+\.js)$" > 2014/06/30 19:16:45 [notice] 39996#0: *3523 "^/script_var/(.+\.js)$" does > not match "/actors/Bargess-Meredit", client: 188.130.179.10, server: > mydomain.com, request: "GET /actors/Bargess-Meredit HTTP/1.1", host: " > mydomain.com" > 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script if > 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script if: false > 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: "/" > 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: "script.php" > 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: "nginx_status" > 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: ~ > "/script_var/.+\.(js)$" > 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: ~ "edit$" > 2014/06/30 19:16:45 [debug] 39996#0: *3523 using configuration "edit$" > > > Почему /actors/Bargess-Meredit не обрабатывается корневым локейшеном? > > Причем я пробовал разные версии nginx - глюк повторяется что на текущем, > что на свежескаченном с официального сайта. ОС Debian 6. > > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > -------------- next part -------------- An HTML attachment was scrubbed... URL: From a.rogovsky at gmail.com Tue Jul 1 03:54:22 2014 From: a.rogovsky at gmail.com (Andrey Rogovsky) Date: Tue, 1 Jul 2014 06:54:22 +0300 Subject: =?UTF-8?B?UmU6INCX0LDQs9Cw0LTQvtGH0L3QsNGPINC/0YDQvtCx0LvQtdC80LAg0YEg0L4=?= =?UTF-8?B?0LHRgNCw0LHQvtGC0LrQvtC5INGA0LXQs9GD0LvRj9GA0L3Ri9GFINCy0Ys=?= =?UTF-8?B?0YDQsNC20LXQvdC40Lk=?= In-Reply-To: References: Message-ID: То есть проблема в edit на конце регулярного выражения? Я понял, спасибо 2014-07-01 6:16 GMT+03:00 М.А. Мохначевский : > location ~ edit$ { > return 444; > } > > вот и > 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: ~ "edit$" > 2014/06/30 19:16:45 [debug] 39996#0: *3523 using configuration "edit$" > > > > 01.07.2014 12:42 пользователь "Andrey Rogovsky" > написал: > >> Имею следующий конфиг nginx: >> >> -- начало -- >> >> server { >> listen 80; >> server_name mydomain.com; >> #access_log /var/log/nginx/mydomain.com.access.log main; >> access_log off; >> error_log /var/log/nginx/mydomain.com.error.log crit; >> open_file_cache max=10000 inactive=120s; >> open_file_cache_valid 30s; >> open_file_cache_min_uses 2; >> open_file_cache_errors off; >> >> error_page 558 = @post; >> >> location / { >> limit_req zone=two burst=3 nodelay; >> proxy_pass http://backend; >> proxy_http_version 1.1; >> proxy_set_header Connection ""; >> proxy_redirect off; >> #proxy_set_header Host $host; >> proxy_set_header Host 'mydomain.com'; >> proxy_set_header X-Real-IP $remote_addr; >> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; >> proxy_set_header UA $uaix; >> proxy_set_header MSK $mskix; >> proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code; >> proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3; >> proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name; >> proxy_connect_timeout 10; >> proxy_send_timeout 10; >> proxy_read_timeout 10; >> >> if ($request_method = POST) { >> return 558; >> } >> >> } >> if ($uri ~ "^/script_var/(.+\.js)$") { >> set $jsname $1; >> } >> location ~* /script_var/.+\.(js)$ { >> root /var/www/mydomain.com; >> try_files /adv/$geoip_country_code/$jsname /adv/$jsname = 404; >> } >> location = /script.php { >> return 444; >> } >> location ~ edit$ { >> return 444; >> } >> location ~ playlist.php$ { >> proxy_pass http://backend; >> proxy_redirect off; >> proxy_http_version 1.1; >> proxy_set_header Connection ""; >> proxy_set_header Host $host; >> proxy_set_header X-Real-IP $remote_addr; >> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; >> proxy_set_header UA $uaix; >> proxy_set_header MSK $mskix; >> proxy_connect_timeout 60; >> proxy_send_timeout 60; >> proxy_read_timeout 60; >> } >> location ~ admin.php$ { >> allow 91.218.74.202; >> allow 213.186.118.138; >> allow 94.232.208.220; >> allow 176.9.35.227; >> allow 83.69.224.215; >> # deny all; >> proxy_pass http://backend; >> proxy_redirect off; >> proxy_http_version 1.1; >> proxy_set_header Connection ""; >> proxy_set_header Host $host; >> proxy_set_header X-Real-IP $remote_addr; >> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; >> proxy_set_header UA $uaix; >> proxy_set_header MSK $mskix; >> proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code; >> proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3; >> proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name; >> proxy_connect_timeout 60; >> proxy_send_timeout 60; >> proxy_read_timeout 60; >> } >> location ~ ^/cgi-bin/.*\.cgi$ { >> proxy_pass http://backend; >> proxy_redirect off; >> } >> location ~ ^/adv/.*$ { >> deny all; >> } >> location ~ >> ^/msqlmdmf/(.+\.(?:gif|jpe?g|png|ico|css|zip|tgz|gz|rar|bz2|tar|js))$ { >> alias /usr/share/phpmyadmin/$1; >> } >> # Static files location >> location ~* >> ^.+\.(swf|ver|ver|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ >> { >> valid_referers none blocked *.mydomain.com mydomain.com; >> if ($invalid_referer) { >> return 403; >> } >> root /var/www/mydomain.com; >> expires 10080m; >> } >> location /nginx_status { >> stub_status on; >> access_log off; >> allow 91.218.74.202; >> allow 213.186.118.138; >> allow 94.232.208.220; >> allow 212.113.52.4; >> deny all; >> } >> >> >> location @post >> { >> limit_req zone=two burst=1; >> set $limit_rate 128k; >> proxy_http_version 1.1; >> proxy_set_header Connection ""; >> proxy_redirect off; >> #proxy_set_header Host $host; >> proxy_set_header Host 'mydomain.com'; >> proxy_set_header X-Real-IP $remote_addr; >> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; >> proxy_set_header UA $uaix; >> proxy_set_header MSK $mskix; >> proxy_set_header GEOIP_COUNTRY_CODE $geoip_country_code; >> proxy_set_header GEOIP_COUNTRY_CODE3 $geoip_country_code3; >> proxy_set_header GEOIP_COUNTRY_NAME $geoip_country_name; >> proxy_connect_timeout 10; >> proxy_send_timeout 10; >> proxy_read_timeout 10; >> proxy_pass http://backend; >> #return 444; >> } >> >> } >> >> -- конец -- >> >> В общем все довольно стандартно. >> >> >> При этом запрос к сайту вида http://mydomain.com/actors/Bezrukov >> обрабатывается нормально: >> >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script var: >> "/actors/Bezrukov" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script regex: >> "^/script_var/(.+\.js)$" >> 2014/06/30 19:16:24 [notice] 39999#0: *3009 "^/script_var/(.+\.js)$" does >> not match "/actors/Bezrukov", client: 188.130.179.10, server: >> mydomain.com, request: "GET /actors/Bezrukov HTTP >> /1.1", host: "mydomain.com" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script if >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 http script if: false >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: "/" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: "script.php" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: "nginx_status" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ >> "/script_var/.+\.(js)$" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "edit$" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ >> "playlist.php$" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "admin.php$" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ >> "^/cgi-bin/.*\.cgi$" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ "^/adv/.*$" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ >> "^/msqlmdmf/(.+\.(?:gif|jpe?g|png|ico|css|zip|tgz|gz|rar|bz2|tar|js))$" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 test location: ~ >> "^.+\.(swf|ver|ver|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|js)$" >> 2014/06/30 19:16:24 [debug] 39999#0: *3009 using configuration "/" >> >> А вот с запросом вида http://mydomain.com/actors/Bargess-Meredit >> происходит вот такой глюк: >> >> 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script var: >> "/actors/Bargess-Meredit" >> 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script regex: >> "^/script_var/(.+\.js)$" >> 2014/06/30 19:16:45 [notice] 39996#0: *3523 "^/script_var/(.+\.js)$" does >> not match "/actors/Bargess-Meredit", client: 188.130.179.10, server: >> mydomain.com, request: "GET /actors/Bargess-Meredit HTTP/1.1", host: " >> mydomain.com" >> 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script if >> 2014/06/30 19:16:45 [debug] 39996#0: *3523 http script if: false >> 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: "/" >> 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: "script.php" >> 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: "nginx_status" >> 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: ~ >> "/script_var/.+\.(js)$" >> 2014/06/30 19:16:45 [debug] 39996#0: *3523 test location: ~ "edit$" >> 2014/06/30 19:16:45 [debug] 39996#0: *3523 using configuration "edit$" >> >> >> Почему /actors/Bargess-Meredit не обрабатывается корневым локейшеном? >> >> Причем я пробовал разные версии nginx - глюк повторяется что на текущем, >> что на свежескаченном с официального сайта. ОС Debian 6. >> >> >> _______________________________________________ >> nginx-ru mailing list >> nginx-ru at nginx.org >> http://mailman.nginx.org/mailman/listinfo/nginx-ru >> > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > -------------- next part -------------- An HTML attachment was scrubbed... URL: From sargaskn at gmail.com Tue Jul 1 06:13:47 2014 From: sargaskn at gmail.com (Sargas) Date: Tue, 1 Jul 2014 09:13:47 +0300 Subject: =?UTF-8?B?UmU6INCU0LLQsCBzdWJfZmlsdGVy?= In-Reply-To: <20140630185430.GG1849@mdounin.ru> References: <20140627142426.GU1849@mdounin.ru> <20140630185430.GG1849@mdounin.ru> Message-ID: Максим, а можно немного подробнее про нюансы с unix сокетами? 30 июня 2014 г., 21:54 пользователь Maxim Dounin написал: > Hello! > > On Sun, Jun 29, 2014 at 09:07:55PM +0400, Maxim Kozlov wrote: > > > Использовать сторонние модули желания нет. > > > > >> Простой workaround - сделать дополнительное проксирование > > Настраивать дополнительный виртуальный сервер? Как лучше тогда > проксировать > > -- на порт или unix сокет? > > Делайте так, как вам удобнее/понятнее. С технической точки > зрения - и отдельного location'а хватит: > > location / { > sub_filter ... > proxy_pass http://localhost/sub2/; > } > > location /sub2/ { > sub_filter ... > ... > } > > Что касается unix-сокетов, то они позволяют наиграть немного > производительности, но иногда бывают нюансы, так что пытаться их > использовать без нужды я бы не рекомендовал. > > -- > Maxim Dounin > http://nginx.org/ > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > -------------- next part -------------- An HTML attachment was scrubbed... URL: From nginx-forum at nginx.us Tue Jul 1 06:36:19 2014 From: nginx-forum at nginx.us (=?UTF-8?Q? =D0=94=D0=B0=D0=B2=D0=B8=D0=B4=20=D0=9C=D0=B7=D0=B0=D1=80?= =?UTF-8?Q?=D0=B5=D1=83=D0=BB=D1=8F=D0=BD ?=) Date: Tue, 01 Jul 2014 02:36:19 -0400 Subject: =?UTF-8?B?UmU6INCd0LXQv9C+0L3Rj9GC0L3QvtC1INC/0L7QstC10LTQtdC90LjQtSDRgNCw?= =?UTF-8?B?0LfQvNC10YDQsCDQutGN0YjQsA==?= In-Reply-To: <20140701001752.GQ1849@mdounin.ru> References: <20140701001752.GQ1849@mdounin.ru> Message-ID: Вряд ли дело в этом: размер блока у меня 1 Кб, средний размер файлов во втором кэше ? около 100 Кб, файлов порядка полумиллиона. Так что погрешность может быть не больше полугигабайта. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251307,251352#msg-251352 From nginx-forum at nginx.us Tue Jul 1 08:37:10 2014 From: nginx-forum at nginx.us (Klim81) Date: Tue, 01 Jul 2014 04:37:10 -0400 Subject: rewrite xbt In-Reply-To: <20140701011949.GW1849@mdounin.ru> References: <20140701011949.GW1849@mdounin.ru> Message-ID: <697939038bf1f8a8040bfd0cd290cfc9.NginxMailingListRussian@forum.nginx.org> Maxim Dounin, спасибо вам огромное! взял вариант с return. Несколько суток потратил на пробы, из них около половины потратил на поиски ответа на задачу.... Огромное спасибо! Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251323,251363#msg-251363 From nginx-forum at nginx.us Tue Jul 1 09:30:03 2014 From: nginx-forum at nginx.us (Andruxa) Date: Tue, 01 Jul 2014 05:30:03 -0400 Subject: =?UTF-8?B?UmU6IE5naW54INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIDQ5OSDQv9GA0Lgg0L/RgNC+?= =?UTF-8?B?0LrRgdC40YDQvtCy0LDQvdC40Lgg0L/QvtGB0LvQtSDQvdC10YHQutC+0Ls=?= =?UTF-8?B?0YzQutC40YUg0YfQsNGB0L7QsiDRgNCw0LHQvtGC0Ys=?= In-Reply-To: <20140701000100.GO1849@mdounin.ru> References: <20140701000100.GO1849@mdounin.ru> Message-ID: <25bbf993cb9f31a15a2da9a305ff9545.NginxMailingListRussian@forum.nginx.org> Максим, спасибо за ответ! Действительно, таймер был увеличен ранее специально, правда решали не совсем эту задачу. На бэкенде обрабатывались продолжительные запросы, соединение держалось открытым, поэтому все таймауты были увеличены. Постепенно с этой проблемой разобрались, перевели долгие процессы в фон, соединение закрываем сразу, но видимо настройку не вернули обратно. Нагрузка на backend не большая по всем параметрам, да и запросов не так много. Используем для мониторинга munin. Сейчас не совсем понятно 1) в логах на backend'е нет запросов, которые на frontend'e помечены как 499 Получается, что запрос либо не был отправлен, либо не дошел. 2) после того, как проблема начинается проявлятся, она стабильно воспроизводится до тех пор, пока не перезагрузишь nginx 3) Все запросы между frontend и backend ходят по http Обнаружили, что если запрашивать ресурс у frontend'a по http и он стабильно не возвращается, то при запросе по https он может вернуться 4) Помимо 499 для части ресурсов возвращался статус 401 Вот тут можно посмотреть дебаг лог https://www.dropbox.com/s/6xw5frcmrypzk8p/filtered_401_renamed.log При этом опять нет ничего в логах на backend'e. К слову на backend работает nginx 1.5.13 И опять после перезапуска nginx'а на frontend все отдается как положено. Тут в логах есть вот такие строки readv: 1:3560 readv() not ready (11: Resource temporarily unavailable) Могут ли быть такие ошибки из проблем с соединением между frotned'ом и backend'ом? Могли бы вы посоветовать, что еще можно проверить? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251304,251365#msg-251365 From nginx-forum at nginx.us Tue Jul 1 09:44:26 2014 From: nginx-forum at nginx.us (Andruxa) Date: Tue, 01 Jul 2014 05:44:26 -0400 Subject: =?UTF-8?B?UmU6IE5naW54INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIDQ5OSDQv9GA0Lgg0L/RgNC+?= =?UTF-8?B?0LrRgdC40YDQvtCy0LDQvdC40Lgg0L/QvtGB0LvQtSDQvdC10YHQutC+0Ls=?= =?UTF-8?B?0YzQutC40YUg0YfQsNGB0L7QsiDRgNCw0LHQvtGC0Ys=?= In-Reply-To: References: Message-ID: <3be870ca3566c6886dc30c0904cbe48d.NginxMailingListRussian@forum.nginx.org> Подсмотрели с коллегами у новелла http://www.novell.com/support/kb/doc.php?id=7007165 Попробовали посмотреть изменение параметра с включенным tcpdump - счетчик не растет. Могли бы вы подсказать, какие еще есть средства диагрности и как можно исправить данный показатель счетчика? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251304,251366#msg-251366 From mdounin at mdounin.ru Tue Jul 1 11:19:37 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 1 Jul 2014 15:19:37 +0400 Subject: =?UTF-8?B?UmU6INCd0LXQv9C+0L3Rj9GC0L3QvtC1INC/0L7QstC10LTQtdC90LjQtSDRgNCw?= =?UTF-8?B?0LfQvNC10YDQsCDQutGN0YjQsA==?= In-Reply-To: References: <20140701001752.GQ1849@mdounin.ru> Message-ID: <20140701111936.GC1849@mdounin.ru> Hello! On Tue, Jul 01, 2014 at 02:36:19AM -0400, Давид Мзареулян wrote: > Вряд ли дело в этом: размер блока у меня 1 Кб, средний размер файлов во > втором кэше ? около 100 Кб, файлов порядка полумиллиона. Так что погрешность > может быть не больше полугигабайта. Бывают ещё: - некорректный размер в памяти из-за ручных удалений (лечится - перезагрузкой кеша, e.g. при выполнении процедуры upgrade); - сюрпризы при использовании нестандартных файловых систем (например, xfs с allocsize=<много> делает странное, см. http://trac.nginx.org/nginx/ticket/157). -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Tue Jul 1 11:58:09 2014 From: nginx-forum at nginx.us (=?UTF-8?Q? =D0=94=D0=B0=D0=B2=D0=B8=D0=B4=20=D0=9C=D0=B7=D0=B0=D1=80?= =?UTF-8?Q?=D0=B5=D1=83=D0=BB=D1=8F=D0=BD ?=) Date: Tue, 01 Jul 2014 07:58:09 -0400 Subject: =?UTF-8?B?UmU6INCd0LXQv9C+0L3Rj9GC0L3QvtC1INC/0L7QstC10LTQtdC90LjQtSDRgNCw?= =?UTF-8?B?0LfQvNC10YDQsCDQutGN0YjQsA==?= In-Reply-To: <20140701111936.GC1849@mdounin.ru> References: <20140701111936.GC1849@mdounin.ru> Message-ID: <65ed258462e0588f4b71ca47197e91a9.NginxMailingListRussian@forum.nginx.org> Хм, кажется, это ?сюрпризы?. У меня XFS как раз. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251307,251375#msg-251375 From nginx-forum at nginx.us Tue Jul 1 12:10:29 2014 From: nginx-forum at nginx.us (=?UTF-8?Q? =D0=94=D0=B0=D0=B2=D0=B8=D0=B4=20=D0=9C=D0=B7=D0=B0=D1=80?= =?UTF-8?Q?=D0=B5=D1=83=D0=BB=D1=8F=D0=BD ?=) Date: Tue, 01 Jul 2014 08:10:29 -0400 Subject: =?UTF-8?B?UmU6INCd0LXQv9C+0L3Rj9GC0L3QvtC1INC/0L7QstC10LTQtdC90LjQtSDRgNCw?= =?UTF-8?B?0LfQvNC10YDQsCDQutGN0YjQsA==?= In-Reply-To: <65ed258462e0588f4b71ca47197e91a9.NginxMailingListRussian@forum.nginx.org> References: <20140701111936.GC1849@mdounin.ru> <65ed258462e0588f4b71ca47197e91a9.NginxMailingListRussian@forum.nginx.org> Message-ID: <17cd7009f84870db9a26593381aa5359.NginxMailingListRussian@forum.nginx.org> Правда, у меня не выставлен allocsize. Вот мои параметры, если это как-то поможет в будущем победить баг: $ mount -l ... /dev/xvdf1 on /mnt1 type xfs (rw,noatime,nodiratime) $ xfs_info /mnt1 meta-data=/dev/xvdf1 isize=256 agcount=4, agsize=26214144 blks = sectsz=512 attr=2 data = bsize=1024 blocks=104856576, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=1024 blocks=32768, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251307,251377#msg-251377 From vitaliy.okulov at gmail.com Tue Jul 1 12:40:35 2014 From: vitaliy.okulov at gmail.com (Vitaliy Okulov) Date: Tue, 1 Jul 2014 16:40:35 +0400 Subject: =?UTF-8?B?UmU6IE5naW54INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIDQ5OSDQv9GA0Lgg0L/RgNC+?= =?UTF-8?B?0LrRgdC40YDQvtCy0LDQvdC40Lgg0L/QvtGB0LvQtSDQvdC10YHQutC+0Ls=?= =?UTF-8?B?0YzQutC40YUg0YfQsNGB0L7QsiDRgNCw0LHQvtGC0Ys=?= In-Reply-To: <3be870ca3566c6886dc30c0904cbe48d.NginxMailingListRussian@forum.nginx.org> References: <3be870ca3566c6886dc30c0904cbe48d.NginxMailingListRussian@forum.nginx.org> Message-ID: Если после tcpdump счетчик не поднялся, то либо backlog надо увеличить + проверить текущие параметры сетевых карт на frontend и backend и всех свитчах по дороге, что везде full duplex и скорость сетевой карты равна скорости порта на свитче, и нет никаких ошибок. Как вариант, в логах Apache включить вывод времени на обработку запроса: httpd.apache.org/docs/2.2/mod/mod_log_config.html - параметр %T, и поискать запросы близкие к timeout параметрам выставленным в nginx. 1 июля 2014 г., 13:44 пользователь Andruxa написал: > Подсмотрели с коллегами у новелла > http://www.novell.com/support/kb/doc.php?id=7007165 > > Попробовали посмотреть изменение параметра с включенным tcpdump - счетчик > не > растет. > > Могли бы вы подсказать, какие еще есть средства диагрности и как можно > исправить данный показатель счетчика? > > Posted at Nginx Forum: > http://forum.nginx.org/read.php?21,251304,251366#msg-251366 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mdounin at mdounin.ru Tue Jul 1 12:59:16 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 1 Jul 2014 16:59:16 +0400 Subject: =?UTF-8?B?UmU6INCd0LXQv9C+0L3Rj9GC0L3QvtC1INC/0L7QstC10LTQtdC90LjQtSDRgNCw?= =?UTF-8?B?0LfQvNC10YDQsCDQutGN0YjQsA==?= In-Reply-To: <17cd7009f84870db9a26593381aa5359.NginxMailingListRussian@forum.nginx.org> References: <20140701111936.GC1849@mdounin.ru> <65ed258462e0588f4b71ca47197e91a9.NginxMailingListRussian@forum.nginx.org> <17cd7009f84870db9a26593381aa5359.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140701125916.GH1849@mdounin.ru> Hello! On Tue, Jul 01, 2014 at 08:10:29AM -0400, Давид Мзареулян wrote: > Правда, у меня не выставлен allocsize. Вот мои параметры, если это как-то > поможет в будущем победить баг: По умолчанию allocsize, если верить интернетам, 64k, при типичном размере ответа 100k - этого будет достаточно, чтобы получить то расхождение объемов, которое наблюдается в вашем случае. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Tue Jul 1 13:16:15 2014 From: nginx-forum at nginx.us (Andruxa) Date: Tue, 01 Jul 2014 09:16:15 -0400 Subject: =?UTF-8?B?UmU6IE5naW54INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIDQ5OSDQv9GA0Lgg0L/RgNC+?= =?UTF-8?B?0LrRgdC40YDQvtCy0LDQvdC40Lgg0L/QvtGB0LvQtSDQvdC10YHQutC+0Ls=?= =?UTF-8?B?0YzQutC40YUg0YfQsNGB0L7QsiDRgNCw0LHQvtGC0Ys=?= In-Reply-To: References: Message-ID: Виталий, спасибо за информацию! Попробуем настроить и понаблюдать. Сейчас только обнаружил, что ошибся и возможно ввел заблуждение насчет счетчиков. Посмотрел показатели не на том адаптере (взял показатели для management адаптера). Вот такие показатели на основном RX packets:612896756 errors:0 dropped:2060993 overruns:0 frame:0 TX packets:631594750 errors:0 dropped:0 overruns:0 carrier:0 Тут соотношение dropped/total значительно ниже. Какое соотношение можно считать допустимым? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251304,251388#msg-251388 From mdounin at mdounin.ru Tue Jul 1 13:27:01 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 1 Jul 2014 17:27:01 +0400 Subject: =?UTF-8?B?UmU6INCU0LLQsCBzdWJfZmlsdGVy?= In-Reply-To: References: <20140627142426.GU1849@mdounin.ru> <20140630185430.GG1849@mdounin.ru> Message-ID: <20140701132700.GJ1849@mdounin.ru> Hello! On Tue, Jul 01, 2014 at 09:13:47AM +0300, Sargas wrote: > Максим, а можно немного подробнее про нюансы с unix сокетами? Например, одно время как минимум на двух разных операционных системах были проблемы с sendfile()'ом через unix-сокеты, что приводило к проблемам при отправке запросов с большим телом. Сейчас я о каких-либо распространённых проблемах с unix-сокетами не осведомлён (кроме, разве что, проблем с одним экспериментальным патчем на sendfile() для FreeBSD, который делает glebius@, но он на то и экспериментальный). Однако, как уже сказано, нюансы - бывают. -- Maxim Dounin http://nginx.org/ From pavel2000 at ngs.ru Tue Jul 1 13:36:54 2014 From: pavel2000 at ngs.ru (Pavel V.) Date: Tue, 1 Jul 2014 20:36:54 +0700 Subject: =?UTF-8?B?UmU6IE5naW54INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIDQ5OSDQv9GA0Lgg0L/RgNC+?= =?UTF-8?B?0LrRgdC40YDQvtCy0LDQvdC40Lgg0L/QvtGB0LvQtSDQvdC10YHQutC+0Ls=?= =?UTF-8?B?0YzQutC40YUg0YfQsNGB0L7QsiDRgNCw0LHQvtGC0Ys=?= In-Reply-To: References: Message-ID: <1038096685.20140701203654@ngs.ru> Здравствуйте, Andruxa. Вы писали 1 июля 2014 г., 20:16:15: > Виталий, спасибо за информацию! Попробуем настроить и понаблюдать. > Сейчас только обнаружил, что ошибся и возможно ввел заблуждение насчет > счетчиков. > Посмотрел показатели не на том адаптере (взял показатели для management > адаптера). > Вот такие показатели на основном > RX packets:612896756 errors:0 dropped:2060993 overruns:0 frame:0 > TX packets:631594750 errors:0 dropped:0 overruns:0 carrier:0 > Тут соотношение dropped/total значительно ниже. > Какое соотношение можно считать допустимым? dropped/total = 0. -- С уважением, Pavel mailto:pavel2000 at ngs.ru From mdounin at mdounin.ru Tue Jul 1 14:10:02 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 1 Jul 2014 18:10:02 +0400 Subject: =?UTF-8?B?UmU6IE5naW54INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIDQ5OSDQv9GA0Lgg0L/RgNC+?= =?UTF-8?B?0LrRgdC40YDQvtCy0LDQvdC40Lgg0L/QvtGB0LvQtSDQvdC10YHQutC+0Ls=?= =?UTF-8?B?0YzQutC40YUg0YfQsNGB0L7QsiDRgNCw0LHQvtGC0Ys=?= In-Reply-To: <25bbf993cb9f31a15a2da9a305ff9545.NginxMailingListRussian@forum.nginx.org> References: <20140701000100.GO1849@mdounin.ru> <25bbf993cb9f31a15a2da9a305ff9545.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140701141001.GN1849@mdounin.ru> Hello! On Tue, Jul 01, 2014 at 05:30:03AM -0400, Andruxa wrote: > Максим, спасибо за ответ! > > Действительно, таймер был увеличен ранее специально, правда решали не совсем > эту задачу. > На бэкенде обрабатывались продолжительные запросы, соединение держалось > открытым, поэтому все таймауты были увеличены. Постепенно с этой проблемой > разобрались, перевели долгие процессы в фон, соединение закрываем сразу, но > видимо настройку не вернули обратно. > > Нагрузка на backend не большая по всем параметрам, да и запросов не так > много. Используем для мониторинга munin. > > Сейчас не совсем понятно > 1) в логах на backend'е нет запросов, которые на frontend'e помечены как > 499 > Получается, что запрос либо не был отправлен, либо не дошел. Как я уже писал, из логов фронтенда очевидно, что не устанавливается соединение с бекендом. Естественно, в логах бекенда его не будет. Нужно смотреть что на бекенде с listen queue (BSD - "netstat -Lan", Linux - "ss -nlt"), и если всё хорошо - доходят ли туда вообще соответствующие SYN-пакеты. > 2) после того, как проблема начинается проявлятся, она стабильно > воспроизводится до тех пор, пока не перезагрузишь nginx > > 3) Все запросы между frontend и backend ходят по http > Обнаружили, что если запрашивать ресурс у frontend'a по http и он стабильно > не возвращается, то при запросе по https он может вернуться > > 4) Помимо 499 для части ресурсов возвращался статус 401 > Вот тут можно посмотреть дебаг лог > https://www.dropbox.com/s/6xw5frcmrypzk8p/filtered_401_renamed.log > При этом опять нет ничего в логах на backend'e. К слову на backend работает > nginx 1.5.13 > И опять после перезапуска nginx'а на frontend все отдается как положено. Про 401 не скажу, а судя по остальным симптомам, то если на бекенде nginx - я бы сказал, что у вас между фронтендом и бекендом statefull firewall, и у него кончаются state'ы. Либо же кончаются локальные порты. Если это так, то с listen queue на бекенде будет всё хорошо, а SYN-пакеты - доходить не будут. > Тут в логах есть вот такие строки > readv: 1:3560 > readv() not ready (11: Resource temporarily unavailable) > Могут ли быть такие ошибки из проблем с соединением между frotned'ом и > backend'ом? Это не ошибки. -- Maxim Dounin http://nginx.org/ From sargaskn at gmail.com Tue Jul 1 16:39:25 2014 From: sargaskn at gmail.com (Sargas) Date: Tue, 1 Jul 2014 19:39:25 +0300 Subject: =?UTF-8?B?UmU6INCU0LLQsCBzdWJfZmlsdGVy?= In-Reply-To: <20140701132700.GJ1849@mdounin.ru> References: <20140627142426.GU1849@mdounin.ru> <20140630185430.GG1849@mdounin.ru> <20140701132700.GJ1849@mdounin.ru> Message-ID: Благодарю, с подобным пока не сталкивался, но теперь буду знать куда смотреть в случае подобной проблемы. Экспериментальный патч это Async sendfile ? 1 июля 2014 г., 16:27 пользователь Maxim Dounin написал: > Hello! > > On Tue, Jul 01, 2014 at 09:13:47AM +0300, Sargas wrote: > > > Максим, а можно немного подробнее про нюансы с unix сокетами? > > Например, одно время как минимум на двух разных операционных > системах были проблемы с sendfile()'ом через unix-сокеты, что > приводило к проблемам при отправке запросов с большим телом. > > Сейчас я о каких-либо распространённых проблемах с unix-сокетами > не осведомлён (кроме, разве что, проблем с одним экспериментальным > патчем на sendfile() для FreeBSD, который делает glebius@, но он > на то и экспериментальный). Однако, как уже сказано, нюансы - > бывают. > > -- > Maxim Dounin > http://nginx.org/ > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mdounin at mdounin.ru Tue Jul 1 16:41:45 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 1 Jul 2014 20:41:45 +0400 Subject: =?UTF-8?B?UmU6INCU0LLQsCBzdWJfZmlsdGVy?= In-Reply-To: References: <20140627142426.GU1849@mdounin.ru> <20140630185430.GG1849@mdounin.ru> <20140701132700.GJ1849@mdounin.ru> Message-ID: <20140701164145.GR1849@mdounin.ru> Hello! On Tue, Jul 01, 2014 at 07:39:25PM +0300, Sargas wrote: > Благодарю, с подобным пока не сталкивался, но теперь буду знать куда > смотреть в случае подобной проблемы. Экспериментальный патч это Async > sendfile ? Да. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Tue Jul 1 16:45:51 2014 From: nginx-forum at nginx.us (hitarcherru) Date: Tue, 01 Jul 2014 12:45:51 -0400 Subject: =?UTF-8?B?V29yZFByZXNzICsgTmdpbngg0YjQuNGE0YDQvtCy0LDQvdC90LDRjyDQsNC00Lw=?= =?UTF-8?B?0LjQvdC60LAg0L/RgNC+0LHQu9C10LzQsCA/?= Message-ID: <6c863a074345f5ead81478385fcf8e55.NginxMailingListRussian@forum.nginx.org> Добрый день! Подскажите пожалуйста, че-то не получается админку запустить чтобы через SSL работает, браузер пишет циклическая переадресация постоянно, в чем может быть причина ? Подкорректируйте конфигурацию пожалуйста server { server_name mysite.com www.mysite.com; listen 192.168.1.100; listen 192.168.1.100:443 ssl; set $root_path /home/testing/data/www/mysite.com; location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { root $root_path; access_log /home/nginx-logs/testing isp; access_log /home/httpd-logs/mysite.com.access.log ; error_page 404 = @fallback; add_header Access-Control-Allow-Origin *; } location / { proxy_pass http://192.168.1.100:81; proxy_redirect http://192.168.1.100:81/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } location ~* ^/(webstat|awstats|webmail|myadmin|pgadmin)/ { proxy_pass http://192.168.1.100:81; proxy_redirect http://192.168.1.100:81/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } location @fallback { proxy_pass http://192.168.1.100:81; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } include /usr/local/ispmgr/etc/nginx.inc; ssl_certificate /home/httpd-cert/testing/mysite.com.crt; ssl_certificate_key /home/httpd-cert/testing/mysite.com.key; charset UTF-8; disable_symlinks if_not_owner from=$root_path; } Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251401#msg-251401 From kulmaks at gmail.com Tue Jul 1 17:30:41 2014 From: kulmaks at gmail.com (Maksim Kulik) Date: Tue, 1 Jul 2014 20:30:41 +0300 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: <6c863a074345f5ead81478385fcf8e55.NginxMailingListRussian@forum.nginx.org> References: <6c863a074345f5ead81478385fcf8e55.NginxMailingListRussian@forum.nginx.org> Message-ID: Думаю это может помочь: http://kulmaks.by/работа-wordpress-на-nginx-apache-постоянный-301-редирект/ И SSL тут совсем не виноват. 1 июля 2014 г., 19:45 пользователь hitarcherru написал: > Добрый день! Подскажите пожалуйста, че-то не получается админку запустить > чтобы через SSL работает, браузер пишет циклическая переадресация > постоянно, > в чем может быть причина ? Подкорректируйте конфигурацию пожалуйста > > Posted at Nginx Forum: > http://forum.nginx.org/read.php?21,251401,251401#msg-251401 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -------------- next part -------------- An HTML attachment was scrubbed... URL: From nginx-forum at nginx.us Tue Jul 1 17:50:54 2014 From: nginx-forum at nginx.us (hitarcherru) Date: Tue, 01 Jul 2014 13:50:54 -0400 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: References: Message-ID: <8e2cb58b66477801d784c5919b85455a.NginxMailingListRussian@forum.nginx.org> так что именно мне нужно в мой конфиг дописать или изменить ? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251404#msg-251404 From nginx-forum at nginx.us Tue Jul 1 18:07:39 2014 From: nginx-forum at nginx.us (hitarcherru) Date: Tue, 01 Jul 2014 14:07:39 -0400 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: <8e2cb58b66477801d784c5919b85455a.NginxMailingListRussian@forum.nginx.org> References: <8e2cb58b66477801d784c5919b85455a.NginxMailingListRussian@forum.nginx.org> Message-ID: потому что без поддержки https:// все нормально работает Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251406#msg-251406 From kulmaks at gmail.com Tue Jul 1 18:07:41 2014 From: kulmaks at gmail.com (Maksim Kulik) Date: Tue, 1 Jul 2014 21:07:41 +0300 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: <8e2cb58b66477801d784c5919b85455a.NginxMailingListRussian@forum.nginx.org> References: <8e2cb58b66477801d784c5919b85455a.NginxMailingListRussian@forum.nginx.org> Message-ID: Вместо 2 и 3 location добавить: location / { index index.php index.html index.htm; try_files $uri $uri/ @fallback; } location ~[^?]*/$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://192.168.1.100:81; } Этого, по идее, хватит. 1 июля 2014 г., 20:50 пользователь hitarcherru написал: > так что именно мне нужно в мой конфиг дописать или изменить ? > > Posted at Nginx Forum: > http://forum.nginx.org/read.php?21,251401,251404#msg-251404 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > -------------- next part -------------- An HTML attachment was scrubbed... URL: From kulmaks at gmail.com Tue Jul 1 18:19:08 2014 From: kulmaks at gmail.com (Maksim Kulik) Date: Tue, 1 Jul 2014 21:19:08 +0300 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: References: <8e2cb58b66477801d784c5919b85455a.NginxMailingListRussian@forum.nginx.org> Message-ID: А можно глянуть конфиг апача? (Он же в качестве бэкэнда работает?) 01.07.2014 21:07 пользователь "hitarcherru" написал: > потому что без поддержки https:// все нормально работает > > Posted at Nginx Forum: > http://forum.nginx.org/read.php?21,251401,251406#msg-251406 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -------------- next part -------------- An HTML attachment was scrubbed... URL: From nginx-forum at nginx.us Tue Jul 1 18:30:22 2014 From: nginx-forum at nginx.us (hitarcherru) Date: Tue, 01 Jul 2014 14:30:22 -0400 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: References: Message-ID: проправил, все равно не работает server { server_name xn----8sbwecba5aajmm6f.xn--p1ai www.xn----8sbwecba5aajmm6f.xn--p1ai; listen 78.108.92.172; listen 78.108.92.172:443 ssl; set $root_path /home/zapalsky/data/www/xn----8sbwecba5aajmm6f.xn--p1ai; location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { root $root_path; access_log /home/nginx-logs/zapalsky isp; access_log /home/httpd-logs/xn----8sbwecba5aajmm6f.xn--p1ai.access.log ; error_page 404 = @fallback; add_header Access-Control-Allow-Origin *; } location / { index index.php index.html index.htm; try_files $uri $uri/ @fallback; } location ~[^?]*/$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://78.108.92.172:81; } include /usr/local/ispmgr/etc/nginx.inc; ssl_certificate /home/httpd-cert/zapalsky/xn----8sbwecba5aajmm6f.xn--p1ai.crt; ssl_certificate_key /home/httpd-cert/zapalsky/xn----8sbwecba5aajmm6f.xn--p1ai.key; charset UTF-8; disable_symlinks if_not_owner from=$root_path; } Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251409#msg-251409 From kulmaks at gmail.com Tue Jul 1 18:33:31 2014 From: kulmaks at gmail.com (Maksim Kulik) Date: Tue, 1 Jul 2014 21:33:31 +0300 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: References: Message-ID: Предыдущее уточнение про работу с http было весомым и сейчас надо смотреть в конфиг бэкэнда. 01.07.2014 21:30 пользователь "hitarcherru" написал: > проправил, все равно не работает > > server { > server_name xn----8sbwecba5aajmm6f.xn--p1ai > www.xn----8sbwecba5aajmm6f.xn--p1ai; > listen 78.108.92.172; > listen 78.108.92.172:443 ssl; > set $root_path > /home/zapalsky/data/www/xn----8sbwecba5aajmm6f.xn--p1ai; > location ~* > ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { > root $root_path; > access_log /home/nginx-logs/zapalsky isp; > access_log > /home/httpd-logs/xn----8sbwecba5aajmm6f.xn--p1ai.access.log ; > error_page 404 = @fallback; > add_header Access-Control-Allow-Origin *; > } > > > > location / { > index index.php index.html index.htm; > try_files $uri $uri/ @fallback; > } > > location ~[^?]*/$ { > proxy_set_header X-Real-IP $remote_addr; > proxy_set_header Host $host; > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; > proxy_set_header X-Forwarded-Proto $scheme; > proxy_pass http://78.108.92.172:81; > } > > > include /usr/local/ispmgr/etc/nginx.inc; > ssl_certificate > /home/httpd-cert/zapalsky/xn----8sbwecba5aajmm6f.xn--p1ai.crt; > ssl_certificate_key > /home/httpd-cert/zapalsky/xn----8sbwecba5aajmm6f.xn--p1ai.key; > charset UTF-8; > disable_symlinks if_not_owner from=$root_path; > } > > Posted at Nginx Forum: > http://forum.nginx.org/read.php?21,251401,251409#msg-251409 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -------------- next part -------------- An HTML attachment was scrubbed... URL: From nginx-forum at nginx.us Tue Jul 1 18:33:47 2014 From: nginx-forum at nginx.us (hitarcherru) Date: Tue, 01 Jul 2014 14:33:47 -0400 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: References: Message-ID: да пожалуйста Options -ExecCGI -Includes php_admin_value open_basedir "/home/data:." php_admin_flag engine on ServerName site.com AssignUserID user user CustomLog /home/httpd-logs/site.access.log combined DocumentRoot /home/data/www/site ErrorLog /home/httpd-logs/site.error.log ServerAdmin hitarcher at gmail.com ServerAlias www.site AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml AddType application/x-httpd-php-source .phps php_admin_value open_basedir "/home/data:." php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f hitarcher at gmail.com" php_admin_value upload_tmp_dir "/home/data/mod-tmp" php_admin_value session.save_path "/home/data/mod-tmp" AddDefaultCharset UTF-8 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251410#msg-251410 From nginx-forum at nginx.us Tue Jul 1 18:42:45 2014 From: nginx-forum at nginx.us (hitarcherru) Date: Tue, 01 Jul 2014 14:42:45 -0400 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: References: Message-ID: <5987065a02376b61c5274751a2169d40.NginxMailingListRussian@forum.nginx.org> ну че скажите ? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251412#msg-251412 From kulmaks at gmail.com Tue Jul 1 19:11:07 2014 From: kulmaks at gmail.com (Maksim Kulik) Date: Tue, 1 Jul 2014 22:11:07 +0300 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: <5987065a02376b61c5274751a2169d40.NginxMailingListRussian@forum.nginx.org> References: <5987065a02376b61c5274751a2169d40.NginxMailingListRussian@forum.nginx.org> Message-ID: Попробуйте добавить в конфиг апача строку: SetEnvIf X-Forwarded-Proto https HTTPS=on И почитайте, на всякий, http://habrahabr.ru/post/142363/ 2014-07-01 21:42 GMT+03:00 hitarcherru : > ну че скажите ? > > Posted at Nginx Forum: > http://forum.nginx.org/read.php?21,251401,251412#msg-251412 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > -------------- next part -------------- An HTML attachment was scrubbed... URL: From nginx-forum at nginx.us Tue Jul 1 19:22:52 2014 From: nginx-forum at nginx.us (hitarcherru) Date: Tue, 01 Jul 2014 15:22:52 -0400 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: References: Message-ID: <2fae1efdb7fce276a995d1e4bfc096cb.NginxMailingListRussian@forum.nginx.org> теперь появилось сообщение 500 Internal Server Error при запросе к https:// Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251414#msg-251414 From nginx-forum at nginx.us Tue Jul 1 19:26:36 2014 From: nginx-forum at nginx.us (hitarcherru) Date: Tue, 01 Jul 2014 15:26:36 -0400 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: <2fae1efdb7fce276a995d1e4bfc096cb.NginxMailingListRussian@forum.nginx.org> References: <2fae1efdb7fce276a995d1e4bfc096cb.NginxMailingListRussian@forum.nginx.org> Message-ID: <90c328c6017fc485a7ab95be4039b2f5.NginxMailingListRussian@forum.nginx.org> wp-login.php?redirect_to=https%3A%2F%2Fsite.com%2Fwp-admin%2F&reauth=1 ерунда в урле Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251415#msg-251415 From nginx-forum at nginx.us Tue Jul 1 19:27:53 2014 From: nginx-forum at nginx.us (hitarcherru) Date: Tue, 01 Jul 2014 15:27:53 -0400 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: <90c328c6017fc485a7ab95be4039b2f5.NginxMailingListRussian@forum.nginx.org> References: <2fae1efdb7fce276a995d1e4bfc096cb.NginxMailingListRussian@forum.nginx.org> <90c328c6017fc485a7ab95be4039b2f5.NginxMailingListRussian@forum.nginx.org> Message-ID: может еще что-то надо в .htaccess прописать ? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251416#msg-251416 From nginx-forum at nginx.us Tue Jul 1 19:52:09 2014 From: nginx-forum at nginx.us (hitarcherru) Date: Tue, 01 Jul 2014 15:52:09 -0400 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: References: <2fae1efdb7fce276a995d1e4bfc096cb.NginxMailingListRussian@forum.nginx.org> <90c328c6017fc485a7ab95be4039b2f5.NginxMailingListRussian@forum.nginx.org> Message-ID: не работает оно, давайте подумаем как сделать не через редирект ? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251418#msg-251418 From kulmaks at gmail.com Wed Jul 2 07:22:08 2014 From: kulmaks at gmail.com (Maksim Kulik) Date: Wed, 2 Jul 2014 10:22:08 +0300 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: References: <2fae1efdb7fce276a995d1e4bfc096cb.NginxMailingListRussian@forum.nginx.org> <90c328c6017fc485a7ab95be4039b2f5.NginxMailingListRussian@forum.nginx.org> Message-ID: Модуль setenvif_module в апач загружен? В урле не ерунда, а то, что делает вордпресс. От веб-сервера это никак не зависит. Рекомендую вдумчиво почитать хотя бы статью на хабре. А потом заглянуть в error-логи. 1 июля 2014 г., 22:52 пользователь hitarcherru написал: > не работает оно, давайте подумаем как сделать не через редирект ? > > Posted at Nginx Forum: > http://forum.nginx.org/read.php?21,251401,251418#msg-251418 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > -------------- next part -------------- An HTML attachment was scrubbed... URL: From volayvaz at gmail.com Wed Jul 2 09:08:14 2014 From: volayvaz at gmail.com (Maksim Zavyalov) Date: Wed, 2 Jul 2014 13:08:14 +0400 Subject: =?UTF-8?B?QkFTSUMg0JDQstGC0L7RgNC40LfQsNGG0LjRjyDQv9C+0LvRjNC30L7QstCw0YI=?= =?UTF-8?B?0LXQu9C10Lkg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINCw0YA=?= =?UTF-8?B?0LPRg9C80LXQvdGC0L7QsiDQt9Cw0L/RgNC+0YHQsC4=?= Message-ID: Привет. Такой вопрос: возможно ли сделать авторизацию пользователей в зависимости от того, какие параметры были отправлены cgi-скрипту. Как пример: location / { fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param REQUEST_URI $request_uri; fastcgi_param SCRIPT_FILENAME $document_root/index.cgi; if ($arg_p = "PATTERN") { auth_basic "closed site"; auth_basic_user_file /path/to/user.pwd; ) fastcgi_pass unix:/var/run/fcgiwrap.socket; } В апаче это делалось выставлением переменной окруженя, которая проверялась директивой Deny from env={ENV_VARIABLE} Возможно-ли что-то подобное в nginx, спасибо. -- ________________ С Уважением, Максим Завьялов -------------- next part -------------- An HTML attachment was scrubbed... URL: From mdounin at mdounin.ru Wed Jul 2 09:54:54 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Wed, 2 Jul 2014 13:54:54 +0400 Subject: =?UTF-8?B?UmU6IEJBU0lDINCQ0LLRgtC+0YDQuNC30LDRhtC40Y8g0L/QvtC70YzQt9C+0LI=?= =?UTF-8?B?0LDRgtC10LvQtdC5INCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiA=?= =?UTF-8?B?0LDRgNCz0YPQvNC10L3RgtC+0LIg0LfQsNC/0YDQvtGB0LAu?= In-Reply-To: References: Message-ID: <20140702095454.GS1849@mdounin.ru> Hello! On Wed, Jul 02, 2014 at 01:08:14PM +0400, Maksim Zavyalov wrote: > Привет. Такой вопрос: возможно ли сделать авторизацию пользователей в > зависимости от того, какие параметры были отправлены cgi-скрипту. > > Как пример: > > location / { > > fastcgi_param QUERY_STRING $query_string; > fastcgi_param REQUEST_METHOD $request_method; > fastcgi_param REQUEST_URI $request_uri; > fastcgi_param SCRIPT_FILENAME $document_root/index.cgi; > if ($arg_p = "PATTERN") > { > auth_basic "closed site"; > auth_basic_user_file /path/to/user.pwd; > ) > fastcgi_pass unix:/var/run/fcgiwrap.socket; > } > В апаче это делалось выставлением переменной окруженя, которая проверялась > директивой > Deny from env={ENV_VARIABLE} > > Возможно-ли что-то подобное в nginx, спасибо. Директива auth_basic начиная с версии 1.3.10 понимает переменные, и если в результате получится специальное значение "off" - то проверок не будет. Соответственно можно сделать как-то так: location / { set $realm "off"; if ($arg_p = "...") { set $realm "closed site"; } auth_basic $realm; auth_basic_user_files /path/to/file; ... } Ну или тривиальный и работающий для произвольных директив метод - сделать rewrite в другой location, и там написать то, что нужно: location / { if ($arg_p = "...") { rewrite (.*) /closed/$1 break; } ... } location /closed/ { auth_basic "closed site"; auth_basic_user_files /path/to/file; ... } Следует, однако, понимать, что вообще подобные проверки аутентификации/авторизации по параметрам, вынесенные отдельно от кода, эти прараметры обрабатывающего, - они чреваты боком. Потому как завтра выяснится, что ваш cgi-код понимате параметры, разделённые ";" (а не только "&", как nginx), и соответственно окажется, что авторизация - обходится тривиально. -- Maxim Dounin http://nginx.org/ From volayvaz at gmail.com Wed Jul 2 10:02:59 2014 From: volayvaz at gmail.com (Maksim Zavyalov) Date: Wed, 2 Jul 2014 14:02:59 +0400 Subject: =?UTF-8?B?UmU6IEJBU0lDINCQ0LLRgtC+0YDQuNC30LDRhtC40Y8g0L/QvtC70YzQt9C+0LI=?= =?UTF-8?B?0LDRgtC10LvQtdC5INCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiA=?= =?UTF-8?B?0LDRgNCz0YPQvNC10L3RgtC+0LIg0LfQsNC/0YDQvtGB0LAu?= In-Reply-To: <20140702095454.GS1849@mdounin.ru> References: <20140702095454.GS1849@mdounin.ru> Message-ID: Спасибо большое за ответ. 2 июля 2014 г., 13:54 пользователь Maxim Dounin написал: > Hello! > > On Wed, Jul 02, 2014 at 01:08:14PM +0400, Maksim Zavyalov wrote: > > > Привет. Такой вопрос: возможно ли сделать авторизацию пользователей в > > зависимости от того, какие параметры были отправлены cgi-скрипту. > > > > Как пример: > > > > location / { > > > > fastcgi_param QUERY_STRING $query_string; > > fastcgi_param REQUEST_METHOD $request_method; > > fastcgi_param REQUEST_URI $request_uri; > > fastcgi_param SCRIPT_FILENAME $document_root/index.cgi; > > if ($arg_p = "PATTERN") > > { > > auth_basic "closed site"; > > auth_basic_user_file /path/to/user.pwd; > > ) > > fastcgi_pass unix:/var/run/fcgiwrap.socket; > > } > > В апаче это делалось выставлением переменной окруженя, которая > проверялась > > директивой > > Deny from env={ENV_VARIABLE} > > > > Возможно-ли что-то подобное в nginx, спасибо. > > Директива auth_basic начиная с версии 1.3.10 понимает переменные, > и если в результате получится специальное значение "off" - то > проверок не будет. Соответственно можно сделать как-то так: > > location / { > set $realm "off"; > > if ($arg_p = "...") { > set $realm "closed site"; > } > > auth_basic $realm; > auth_basic_user_files /path/to/file; > > ... > } > > Ну или тривиальный и работающий для произвольных директив метод - > сделать rewrite в другой location, и там написать то, что нужно: > > location / { > if ($arg_p = "...") { > rewrite (.*) /closed/$1 break; > } > > ... > } > > location /closed/ { > auth_basic "closed site"; > auth_basic_user_files /path/to/file; > > ... > } > > Следует, однако, понимать, что вообще подобные проверки > аутентификации/авторизации по параметрам, вынесенные отдельно от > кода, эти прараметры обрабатывающего, - они чреваты боком. Потому > как завтра выяснится, что ваш cgi-код понимате параметры, > разделённые ";" (а не только "&", как nginx), и соответственно > окажется, что авторизация - обходится тривиально. > > -- > Maxim Dounin > http://nginx.org/ > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -- ________________ С Уважением, Максим Завьялов -------------- next part -------------- An HTML attachment was scrubbed... URL: From nginx-forum at nginx.us Wed Jul 2 10:16:19 2014 From: nginx-forum at nginx.us (hitarcherru) Date: Wed, 02 Jul 2014 06:16:19 -0400 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: References: Message-ID: У вас есть почта ? Пришли пож, давай сделаем тестовый сайт и вы попробуете сделать ? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251432#msg-251432 From mdounin at mdounin.ru Wed Jul 2 15:55:31 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Wed, 2 Jul 2014 19:55:31 +0400 Subject: =?UTF-8?B?UmU6IEJBU0lDINCQ0LLRgtC+0YDQuNC30LDRhtC40Y8g0L/QvtC70YzQt9C+0LI=?= =?UTF-8?B?0LDRgtC10LvQtdC5INCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiA=?= =?UTF-8?B?0LDRgNCz0YPQvNC10L3RgtC+0LIg0LfQsNC/0YDQvtGB0LAu?= In-Reply-To: <20140702095454.GS1849@mdounin.ru> References: <20140702095454.GS1849@mdounin.ru> Message-ID: <20140702155531.GZ1849@mdounin.ru> Hello! On Wed, Jul 02, 2014 at 01:54:54PM +0400, Maxim Dounin wrote: [...] > Ну или тривиальный и работающий для произвольных директив метод - > сделать rewrite в другой location, и там написать то, что нужно: > > location / { > if ($arg_p = "...") { > rewrite (.*) /closed/$1 break; Err, тут должно было быть "rewrite ... last", а не "break". -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Thu Jul 3 12:22:42 2014 From: nginx-forum at nginx.us (JohnNovimov) Date: Thu, 03 Jul 2014 08:22:42 -0400 Subject: the http output chain is empty bug In-Reply-To: <20140529150705.GL1849@mdounin.ru> References: <20140529150705.GL1849@mdounin.ru> Message-ID: <5431a19d4b022e687ae1fb9e0db6bd20.NginxMailingListRussian@forum.nginx.org> ну так можете подсказать как это исправить? недавно обновил nginx и очень пожалел об этом. это очень серьезный баг, где ssi даже без виртуал запрсов все равно пустые страницы шлет! Posted at Nginx Forum: http://forum.nginx.org/read.php?21,250456,251445#msg-251445 From nginx-forum at nginx.us Thu Jul 3 12:27:03 2014 From: nginx-forum at nginx.us (JohnNovimov) Date: Thu, 03 Jul 2014 08:27:03 -0400 Subject: the http output chain is empty bug In-Reply-To: <5431a19d4b022e687ae1fb9e0db6bd20.NginxMailingListRussian@forum.nginx.org> References: <20140529150705.GL1849@mdounin.ru> <5431a19d4b022e687ae1fb9e0db6bd20.NginxMailingListRussian@forum.nginx.org> Message-ID: <80f2f11aa631cdc9662355b1eddf7b8b.NginxMailingListRussian@forum.nginx.org> помогло отключение gzip. когда теперь ждать исправления бага?.. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,250456,251446#msg-251446 From mdounin at mdounin.ru Thu Jul 3 12:46:10 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Thu, 3 Jul 2014 16:46:10 +0400 Subject: the http output chain is empty bug In-Reply-To: <80f2f11aa631cdc9662355b1eddf7b8b.NginxMailingListRussian@forum.nginx.org> References: <20140529150705.GL1849@mdounin.ru> <5431a19d4b022e687ae1fb9e0db6bd20.NginxMailingListRussian@forum.nginx.org> <80f2f11aa631cdc9662355b1eddf7b8b.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140703124610.GK1849@mdounin.ru> Hello! On Thu, Jul 03, 2014 at 08:27:03AM -0400, JohnNovimov wrote: > помогло отключение gzip. когда теперь ждать исправления бага?.. Если у вас проблема с nginx'ом без сторонних модулей - пожалуйста, огласите подробности. Если же, как в исходном сообщении треда, проблема со сторонним модулем lua, то то имеет смысл задавать этот вопрос автору оного модуля. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Fri Jul 4 09:48:44 2014 From: nginx-forum at nginx.us (Maksim Kulik) Date: Fri, 04 Jul 2014 05:48:44 -0400 Subject: =?UTF-8?B?UmU6IFdvcmRQcmVzcyArIE5naW54INGI0LjRhNGA0L7QstCw0L3QvdCw0Y8g0LA=?= =?UTF-8?B?0LTQvNC40L3QutCwINC/0YDQvtCx0LvQtdC80LAgPw==?= In-Reply-To: References: Message-ID: kulmaks собака гмэйл точка сom Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251401,251455#msg-251455 From tvword at yandex.ru Fri Jul 4 11:10:17 2014 From: tvword at yandex.ru (sv) Date: Fri, 04 Jul 2014 15:10:17 +0400 Subject: =?UTF-8?B?0KHQstGP0LfQutCwIE5HSU5YINC4INGB0LDQvNC+0L/QuNGB0L3Ri9C5INC80L4=?= =?UTF-8?B?0LTRg9C70YwgTkdJTlgg0LTQu9GPINCR0JQ=?= Message-ID: <53B68B99.7040103@yandex.ru> Добрый день! Есть задача - обеспечить два интерфейса для доступа к одной базе данных: - первый - через web - интерфейс (обычный сайт); - второй - через интерфейс приложения мобильного устройства; Вопрос. На сколько будет идеологически правильно для мобильных устройств использовать в качестве сервера самописный модуль nginx, если сам сайт также работает под управлением nginx? Каким образом можно при этом обеспечить сихронную работу nginx и его модуля с общей базой данных? From vbart at nginx.com Fri Jul 4 11:26:40 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Fri, 04 Jul 2014 15:26:40 +0400 Subject: =?UTF-8?B?UmU6INCh0LLRj9C30LrQsCBOR0lOWCDQuCDRgdCw0LzQvtC/0LjRgdC90YvQuSA=?= =?UTF-8?B?0LzQvtC00YPQu9GMIE5HSU5YINC00LvRjyDQkdCU?= In-Reply-To: <53B68B99.7040103@yandex.ru> References: <53B68B99.7040103@yandex.ru> Message-ID: <2003759.cjhuAYS7a0@vbart-workstation> On Friday 04 July 2014 15:10:17 sv wrote: > Добрый день! > > Есть задача - обеспечить два интерфейса для доступа к одной базе данных: > > - первый - через web - интерфейс (обычный сайт); > - второй - через интерфейс приложения мобильного устройства; > > Вопрос. На сколько будет идеологически правильно для мобильных устройств > использовать в качестве сервера самописный модуль nginx, если сам сайт > также работает под управлением nginx? > > Каким образом можно при этом обеспечить сихронную работу nginx и его > модуля с общей базой данных? > [..] Идеологически правильным - оставить внутренности nginx в покое и написать логику работы с базой отдельным FastCGI-приложением. -- Валентин Бартенев From tvword at yandex.ru Fri Jul 4 11:43:28 2014 From: tvword at yandex.ru (sv) Date: Fri, 04 Jul 2014 15:43:28 +0400 Subject: =?UTF-8?B?UmU6INCh0LLRj9C30LrQsCBOR0lOWCDQuCDRgdCw0LzQvtC/0LjRgdC90YvQuSA=?= =?UTF-8?B?0LzQvtC00YPQu9GMIE5HSU5YINC00LvRjyDQkdCU?= In-Reply-To: <2003759.cjhuAYS7a0@vbart-workstation> References: <53B68B99.7040103@yandex.ru> <2003759.cjhuAYS7a0@vbart-workstation> Message-ID: <53B69360.6070407@yandex.ru> Валентин Бартенев пишет: > On Friday 04 July 2014 15:10:17 sv wrote: >> Добрый день! >> >> Есть задача - обеспечить два интерфейса для доступа к одной базе данных: >> >> - первый - через web - интерфейс (обычный сайт); >> - второй - через интерфейс приложения мобильного устройства; >> >> Вопрос. На сколько будет идеологически правильно для мобильных устройств >> использовать в качестве сервера самописный модуль nginx, если сам сайт >> также работает под управлением nginx? >> >> Каким образом можно при этом обеспечить сихронную работу nginx и его >> модуля с общей базой данных? >> > [..] > > Идеологически правильным - оставить внутренности nginx в покое и написать > логику работы с базой отдельным FastCGI-приложением. Я так понял с БД допустим будет работать PHP-FPM. А как обеспечить обработку запросов с мобильного устройства? Я так понимаю - какой-то демон на определенном порту сервера. В качестве этого демона я предполагал самописный модуль NGINX. Попровьте, если не прав. From mdounin at mdounin.ru Fri Jul 4 11:49:02 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Fri, 4 Jul 2014 15:49:02 +0400 Subject: =?UTF-8?B?UmU6INCh0LLRj9C30LrQsCBOR0lOWCDQuCDRgdCw0LzQvtC/0LjRgdC90YvQuSA=?= =?UTF-8?B?0LzQvtC00YPQu9GMIE5HSU5YINC00LvRjyDQkdCU?= In-Reply-To: <53B69360.6070407@yandex.ru> References: <53B68B99.7040103@yandex.ru> <2003759.cjhuAYS7a0@vbart-workstation> <53B69360.6070407@yandex.ru> Message-ID: <20140704114902.GP1849@mdounin.ru> Hello! On Fri, Jul 04, 2014 at 03:43:28PM +0400, sv wrote: > Валентин Бартенев пишет: > >On Friday 04 July 2014 15:10:17 sv wrote: > >>Добрый день! > >> > >>Есть задача - обеспечить два интерфейса для доступа к одной базе данных: > >> > >>- первый - через web - интерфейс (обычный сайт); > >>- второй - через интерфейс приложения мобильного устройства; > >> > >>Вопрос. На сколько будет идеологически правильно для мобильных устройств > >>использовать в качестве сервера самописный модуль nginx, если сам сайт > >>также работает под управлением nginx? > >> > >>Каким образом можно при этом обеспечить сихронную работу nginx и его > >>модуля с общей базой данных? > >> > >[..] > > > >Идеологически правильным - оставить внутренности nginx в покое и написать > >логику работы с базой отдельным FastCGI-приложением. > Я так понял с БД допустим будет работать PHP-FPM. А как обеспечить обработку > запросов с мобильного устройства? Я так понимаю - какой-то демон на > определенном порту сервера. В качестве этого демона я предполагал самописный > модуль NGINX. Попровьте, если не прав. Зачем? Мобильное приложение прекрасно может общаться по HTTP, не надо изобретать велосипед. -- Maxim Dounin http://nginx.org/ From tvword at yandex.ru Fri Jul 4 11:59:46 2014 From: tvword at yandex.ru (sv) Date: Fri, 04 Jul 2014 15:59:46 +0400 Subject: =?UTF-8?B?UmU6INCh0LLRj9C30LrQsCBOR0lOWCDQuCDRgdCw0LzQvtC/0LjRgdC90YvQuSA=?= =?UTF-8?B?0LzQvtC00YPQu9GMIE5HSU5YINC00LvRjyDQkdCU?= In-Reply-To: <20140704114902.GP1849@mdounin.ru> References: <53B68B99.7040103@yandex.ru> <2003759.cjhuAYS7a0@vbart-workstation> <53B69360.6070407@yandex.ru> <20140704114902.GP1849@mdounin.ru> Message-ID: <53B69732.6020607@yandex.ru> Maxim Dounin пишет: > Hello! > > On Fri, Jul 04, 2014 at 03:43:28PM +0400, sv wrote: > >> Валентин Бартенев пишет: >>> On Friday 04 July 2014 15:10:17 sv wrote: >>>> Добрый день! >>>> >>>> Есть задача - обеспечить два интерфейса для доступа к одной базе данных: >>>> >>>> - первый - через web - интерфейс (обычный сайт); >>>> - второй - через интерфейс приложения мобильного устройства; >>>> >>>> Вопрос. На сколько будет идеологически правильно для мобильных устройств >>>> использовать в качестве сервера самописный модуль nginx, если сам сайт >>>> также работает под управлением nginx? >>>> >>>> Каким образом можно при этом обеспечить сихронную работу nginx и его >>>> модуля с общей базой данных? >>>> >>> [..] >>> >>> Идеологически правильным - оставить внутренности nginx в покое и написать >>> логику работы с базой отдельным FastCGI-приложением. >> Я так понял с БД допустим будет работать PHP-FPM. А как обеспечить обработку >> запросов с мобильного устройства? Я так понимаю - какой-то демон на >> определенном порту сервера. В качестве этого демона я предполагал самописный >> модуль NGINX. Попровьте, если не прав. > Зачем? Мобильное приложение прекрасно может общаться по HTTP, не > надо изобретать велосипед. Большое Спасибо, понял :) From nginx-forum at nginx.us Sun Jul 6 21:01:28 2014 From: nginx-forum at nginx.us (Edrard) Date: Sun, 06 Jul 2014 17:01:28 -0400 Subject: =?UTF-8?B?0J/RgNC+0LHQu9C10LzQsCDRgSBnemlw?= Message-ID: Здравствуйте. Использую nginx как фронтэнд к апачу, на nginx-е настороено сжатие, вот как выглядит конфиг user nginx; worker_processes 4; worker_rlimit_nofile 30000; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 2056; } ## Timeouts http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 20; gzip on; gzip_buffers 8 64k; #gzip_disable Firefox/([0-2]\.|3\.0); #gzip_disable Chrome/2; #gzip_disable Safari; gzip_disable MSIE [4-6]\.; gzip_comp_level 7; gzip_http_version 1.0; gzip_vary on; gzip_static off; gzip_types application/javascript text/css text/plain application/x-javascript text/xml application/xml application/xml+rss image/x-icon image/bmp; gzip_min_length 1024; gzip_proxied any; limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s; server { listen 80 default_server; listen 8085; server_name wot-news.com www.wot-news.com; access_log /var/log/nginx/host.access.log main; root /var/www/vhosts/wot-news.com/http; expires epoch; location / { proxy_pass http://127.0.0.1:8080/; proxy_redirect off; proxy_pass_header Set-Cookie; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 64k; proxy_buffers 8 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 10m; allow 91.238.84.6; allow 127.0.0.1; allow 80.91.175.92; allow 80.91.175.93; allow 172.16.1.36; #deny all; #limit_req zone=one burst=5; } location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ { root /var/www/vhosts/wot-news.com/http/; expires 1h; } location /images/ { root /var/www/vhosts/wot-news.com/http/; expires 30d; } location /ajax/load_stat/ { limit_req zone=one burst=4; } location /uploads/files { add_header Content-type application/octet-stream; internal; } location /uploads/sp { add_header Content-type application/octet-stream; internal; } location /uploads/clan { add_header Content-type application/octet-stream; internal; } location /uploads/free { limit_rate 128k; } } } При этом все тесты, типа http://checkgzipcompression.com/?url=wot-news.com говорят, что все хорошо, но мой браузер(причем как Moz так chrom), говорят о другом, да и PageSpeed ругается, что не включено сжатие. Очень нужна помощь, так как уже не знаю куда копать. Думал, что проблема в Codeigniter, но и на обычной странице не работает. nginx версии 1.7.2 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251480,251480#msg-251480 From nginx-forum at nginx.us Sun Jul 6 21:03:24 2014 From: nginx-forum at nginx.us (Edrard) Date: Sun, 06 Jul 2014 17:03:24 -0400 Subject: =?UTF-8?B?UmU6INCf0YDQvtCx0LvQtdC80LAg0YEgZ3ppcA==?= In-Reply-To: References: Message-ID: <1411538ac85ba31b3ff4d0b13cc2d9a1.NginxMailingListRussian@forum.nginx.org> Забыл добавить ссылку на pagespeed для удобства - https://developers.google.com/speed/pagespeed/insights/?url=wot-news.com Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251480,251481#msg-251481 From vbart at nginx.com Sun Jul 6 21:16:55 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Mon, 07 Jul 2014 01:16:55 +0400 Subject: =?UTF-8?B?UmU6INCf0YDQvtCx0LvQtdC80LAg0YEgZ3ppcA==?= In-Reply-To: <1411538ac85ba31b3ff4d0b13cc2d9a1.NginxMailingListRussian@forum.nginx.org> References: <1411538ac85ba31b3ff4d0b13cc2d9a1.NginxMailingListRussian@forum.nginx.org> Message-ID: <127705526.E4RXD6gJ41@vbart-laptop> On Sunday 06 July 2014 17:03:24 Edrard wrote: > Забыл добавить ссылку на pagespeed для удобства - > https://developers.google.com/speed/pagespeed/insights/?url=wot-news.com > И Firefox и PageSpeed по ссылке показывают, что gzip работает. Вероятно вам стоит почистить кэш браузера. -- Валентин Бартенев From eugene.peregudov at gmail.com Mon Jul 7 07:08:34 2014 From: eugene.peregudov at gmail.com (Eugene Peregudov) Date: Mon, 07 Jul 2014 14:08:34 +0700 Subject: =?UTF-8?B?0L/RgNC+0LrRgdC40YDQvtCy0LDQvdC40LUg0LHQvtC70YzRiNC40YUg0YTQsNC5?= =?UTF-8?B?0LvQvtCy?= Message-ID: Доброго времени суток! Имеется веб-приложение к хранилищу файлов, преимущественно больших, схема: client <--> nginx proxy <--> apache, прокси и бэкенд на разных машинах (nginx/1.6.0, ОС RHEL6.5 x64) При загрузке большого файла в веб-приложение (10-15Гб), nginx сначала целиком буферизует содержимое http-запроса, лишь затем отдает бэкенду... на прокси-машине в момент загрузки файла наблюдается большой client_temp, соотвественно на клиенте большая задержка: #lsof | grep client_temp nginx 30802 nginx ... 8,1 3654929415 394068 /var/cache/nginx/client_temp/0000000002 (deleted) Периодически, на больших файлах браузер отдает клиенту 502 Bad Gateway, бэкенд отваливается по таймауту, proxy_buffering off не помогает (по идее и не должен...). Есть ли возможность отключения полной буферизации проксируемого запроса на прокси-машине? т.е. чтобы nginx буферизовал, например, часть запроса от клиента, затем открывал соединение с бэкендом и неспеша, кусочек за кусочком передавал данные от клиента бэкенду. ssl on; ..... large_client_header_buffers 8 256k; client_max_body_size 16G; location / { proxy_pass http://backend:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header Host $host; proxy_connect_timeout 60; proxy_send_timeout 300; proxy_read_timeout 300; proxy_redirect off; proxy_buffering off; proxy_set_header Connection close; proxy_pass_header Content-Type; proxy_pass_header Content-Disposition; proxy_pass_header Content-Length; } Спасибо! -- With best regards, Eugene JONIK Peregudov mailto: eugene.peregudov at gmail.com From nginx-forum at nginx.us Mon Jul 7 11:54:08 2014 From: nginx-forum at nginx.us (irgola) Date: Mon, 07 Jul 2014 07:54:08 -0400 Subject: =?UTF-8?B?0YHQutCw0YfQuNCy0LDQtdGC0YHRjyBpbmRleC5waHA=?= Message-ID: <67e75f57bf0fe43f882a26614a00a081.NginxMailingListRussian@forum.nginx.org> Я первый раз имею дело с nginx и у меня возникла проблема, index.php скачивается вместо загрузки страницы. Возможно я что-то сделал неккоректно. Вот мои конфиги: server { listen 8080; #root /var/www/dd.test.com/rockmongo; access_log /var/www/dd.test.com/nginx.access.log; server_name dd.test.com www.dd.test.com; root /var/www/dd.test.com/rockmongo; location / { index index.html index.php; } location ~ \.php$ { # fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/dd.test.com/rockmongo$fastcgi_script_name; include /etc/nginx/fastcgi_params; } } user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_names_hash_bucket_size 64; include /etc/nginx/mime.types; #default_type application/octet-stream; default_type text/html; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; gzip on; gzip_disable "msie6"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251494,251494#msg-251494 From maxim at nginx.com Mon Jul 7 12:00:42 2014 From: maxim at nginx.com (Maxim Konovalov) Date: Mon, 07 Jul 2014 16:00:42 +0400 Subject: =?UTF-8?B?UmU6IFNQRFkg0LLQvNC10YHRgtC1INGBINCy0LrQu9GO0YfQtdC90L3Ri9C8IHBy?= =?UTF-8?B?b3h5X2NhY2hlX2J5cGFzcyAoIzQyOCk=?= In-Reply-To: <53A0493E.5040408@nginx.com> References: <482D278A-1A4D-47A9-B936-1E1786D37CCC@sonru.com> <2702734.o9QWP8dTeh@vbart-workstation> <1878949.JPPHYv9qVD@vbart-workstation> <1B285EBC-A43C-4D8A-84A1-CCE7FB1F034F@sonru.com> <5391C1B5.7060403@nginx.com> <5DE2A9DB-6BA7-45E6-BB3A-C4316AE2DFEF@sonru.com> <25619FF2-D441-4CF2-8290-88B68631C30E@sonru.com> <53A0493E.5040408@nginx.com> Message-ID: <53BA8BEA.2040705@nginx.com> On 6/17/14 5:57 PM, Maxim Konovalov wrote: > On 6/17/14 5:54 PM, Anatoly Mikhailov wrote: >> >> On 06 Jun 2014, at 16:13, Anatoly Mikhailov wrote: >> >>> >>> On 06 Jun 2014, at 14:27, Maxim Konovalov wrote: >>> >>>> [...] >>>>> начал ловить те же баги на не пропатченном Nginx на другом сервере >>>>> с меньшей нагрузкой, этот патч в опен-сорсе очень бы не помешал! >>>>> >>>> Код в процессе внутреннего ревью. >>> >>> Отличная новость в пятницу, спасибо! >> >> Nginx 1.7.2 содержит именно этот багфикс? >> > Не содержит. > JFYI, 1.7.3, выпуск которого назначен на завтра, будет с фиксом: http://mailman.nginx.org/pipermail/nginx-devel/2014-July/005540.html http://trac.nginx.org/nginx/ticket/428 -- Maxim Konovalov http://nginx.com From dmitry.goryainov at gmail.com Mon Jul 7 12:16:06 2014 From: dmitry.goryainov at gmail.com (Dmitry) Date: Mon, 7 Jul 2014 16:16:06 +0400 Subject: =?UTF-8?B?UmU6INGB0LrQsNGH0LjQstCw0LXRgtGB0Y8gaW5kZXgucGhw?= In-Reply-To: <67e75f57bf0fe43f882a26614a00a081.NginxMailingListRussian@forum.nginx.org> References: <67e75f57bf0fe43f882a26614a00a081.NginxMailingListRussian@forum.nginx.org> Message-ID: php-fpm поднят? сокет /var/run/php5-fpm.sock корректен? On Mon, Jul 7, 2014 at 3:54 PM, irgola wrote: > Я первый раз имею дело с nginx и у меня возникла проблема, index.php > скачивается вместо загрузки страницы. Возможно я что-то сделал неккоректно. > Вот мои конфиги: > server { > listen 8080; > #root /var/www/dd.test.com/rockmongo; > > access_log /var/www/dd.test.com/nginx.access.log; > > server_name dd.test.com www.dd.test.com; > root /var/www/dd.test.com/rockmongo; > location / { > index index.html index.php; > } > location ~ \.php$ { > # fastcgi_pass 127.0.0.1:9000; > fastcgi_pass unix:/var/run/php5-fpm.sock; > fastcgi_index index.php; > fastcgi_param SCRIPT_FILENAME > /var/www/dd.test.com/rockmongo$fastcgi_script_name; > include /etc/nginx/fastcgi_params; > } > } > > user www-data; > worker_processes 4; > pid /run/nginx.pid; > > events { > worker_connections 768; > # multi_accept on; > } > > http { > sendfile on; > tcp_nopush on; > tcp_nodelay on; > keepalive_timeout 65; > types_hash_max_size 2048; > > sendfile on; > tcp_nopush on; > tcp_nodelay on; > keepalive_timeout 65; > types_hash_max_size 2048; > server_names_hash_bucket_size 64; > include /etc/nginx/mime.types; > #default_type application/octet-stream; > default_type text/html; > access_log /var/log/nginx/access.log; > error_log /var/log/nginx/error.log; > gzip on; > gzip_disable "msie6"; > gzip on; > gzip_disable "msie6"; > include /etc/nginx/conf.d/*.conf; > include /etc/nginx/sites-enabled/*; > } > > Posted at Nginx Forum: > http://forum.nginx.org/read.php?21,251494,251494#msg-251494 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -- Dmitry Goryainov -------------- next part -------------- An HTML attachment was scrubbed... URL: From me at kemko.ru Mon Jul 7 12:26:58 2014 From: me at kemko.ru (=?UTF-8?B?0JTQvNC40YLRgNC40Lkg0JDQvdC00YDQtdC10LI=?=) Date: Mon, 7 Jul 2014 16:26:58 +0400 Subject: =?UTF-8?B?UmU6INGB0LrQsNGH0LjQstCw0LXRgtGB0Y8gaW5kZXgucGhw?= In-Reply-To: References: <67e75f57bf0fe43f882a26614a00a081.NginxMailingListRussian@forum.nginx.org> Message-ID: Обычно всё заканчивается тем, что после предыдущих (с неверным конфигом) ошибок не был сброшен кэш браузера. 2014-07-07 16:16 GMT+04:00 Dmitry : > php-fpm поднят? > сокет /var/run/php5-fpm.sock корректен? > > > On Mon, Jul 7, 2014 at 3:54 PM, irgola wrote: > >> Я первый раз имею дело с nginx и у меня возникла проблема, index.php >> скачивается вместо загрузки страницы. Возможно я что-то сделал >> неккоректно. >> Вот мои конфиги: >> server { >> listen 8080; >> #root /var/www/dd.test.com/rockmongo; >> >> access_log /var/www/dd.test.com/nginx.access.log; >> >> server_name dd.test.com www.dd.test.com; >> root /var/www/dd.test.com/rockmongo; >> location / { >> index index.html index.php; >> } >> location ~ \.php$ { >> # fastcgi_pass 127.0.0.1:9000; >> fastcgi_pass unix:/var/run/php5-fpm.sock; >> fastcgi_index index.php; >> fastcgi_param SCRIPT_FILENAME >> /var/www/dd.test.com/rockmongo$fastcgi_script_name; >> include /etc/nginx/fastcgi_params; >> } >> } >> >> user www-data; >> worker_processes 4; >> pid /run/nginx.pid; >> >> events { >> worker_connections 768; >> # multi_accept on; >> } >> >> http { >> sendfile on; >> tcp_nopush on; >> tcp_nodelay on; >> keepalive_timeout 65; >> types_hash_max_size 2048; >> >> sendfile on; >> tcp_nopush on; >> tcp_nodelay on; >> keepalive_timeout 65; >> types_hash_max_size 2048; >> server_names_hash_bucket_size 64; >> include /etc/nginx/mime.types; >> #default_type application/octet-stream; >> default_type text/html; >> access_log /var/log/nginx/access.log; >> error_log /var/log/nginx/error.log; >> gzip on; >> gzip_disable "msie6"; >> gzip on; >> gzip_disable "msie6"; >> include /etc/nginx/conf.d/*.conf; >> include /etc/nginx/sites-enabled/*; >> } >> >> Posted at Nginx Forum: >> http://forum.nginx.org/read.php?21,251494,251494#msg-251494 >> >> _______________________________________________ >> nginx-ru mailing list >> nginx-ru at nginx.org >> http://mailman.nginx.org/mailman/listinfo/nginx-ru > > > > > -- > Dmitry Goryainov > > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mdounin at mdounin.ru Mon Jul 7 13:57:50 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Mon, 7 Jul 2014 17:57:50 +0400 Subject: =?UTF-8?B?UmU6INC/0YDQvtC60YHQuNGA0L7QstCw0L3QuNC1INCx0L7Qu9GM0YjQuNGFINGE?= =?UTF-8?B?0LDQudC70L7Qsg==?= In-Reply-To: References: Message-ID: <20140707135749.GE1849@mdounin.ru> Hello! On Mon, Jul 07, 2014 at 02:08:34PM +0700, Eugene Peregudov wrote: > Доброго времени суток! > > Имеется веб-приложение к хранилищу файлов, преимущественно больших, схема: > client <--> nginx proxy <--> apache, прокси и бэкенд на разных машинах > (nginx/1.6.0, ОС RHEL6.5 x64) > > При загрузке большого файла в веб-приложение (10-15Гб), nginx сначала > целиком буферизует содержимое http-запроса, лишь затем отдает бэкенду... > > на прокси-машине в момент загрузки файла наблюдается большой client_temp, > соотвественно на клиенте большая задержка: > #lsof | grep client_temp > nginx 30802 nginx ... 8,1 3654929415 394068 > /var/cache/nginx/client_temp/0000000002 (deleted) > > Периодически, на больших файлах браузер отдает клиенту 502 Bad Gateway, > бэкенд отваливается по таймауту, proxy_buffering off не помогает (по идее и > не должен...). > > Есть ли возможность отключения полной буферизации проксируемого запроса на > прокси-машине? т.е. чтобы nginx буферизовал, например, часть запроса от > клиента, затем открывал соединение с бэкендом и неспеша, кусочек за кусочком > передавал данные от клиента бэкенду. Нет, такой возможности в настоящий момент нет. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Mon Jul 7 17:57:35 2014 From: nginx-forum at nginx.us (Edrard) Date: Mon, 07 Jul 2014 13:57:35 -0400 Subject: =?UTF-8?B?UmU6INCf0YDQvtCx0LvQtdC80LAg0YEgZ3ppcA==?= In-Reply-To: <127705526.E4RXD6gJ41@vbart-laptop> References: <127705526.E4RXD6gJ41@vbart-laptop> Message-ID: <4e6628e0d71d044fa6fd95028ca67a46.NginxMailingListRussian@forum.nginx.org> Спасибо огромное, все разобрался, выключил Касперского Интеренет Секьюрити на рабочей машине, и сразу показало, что сжатие есть. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251480,251504#msg-251504 From nginx-forum at nginx.us Mon Jul 7 18:18:28 2014 From: nginx-forum at nginx.us (Sferg) Date: Mon, 07 Jul 2014 14:18:28 -0400 Subject: =?UTF-8?B?0KHQvtC+0LHRidC10L3QuNGPINC+0LEg0L7RiNC40LHQutCw0YUg0L7RgiBwaHAt?= =?UTF-8?B?ZnBtINC/0LjRiNGD0YLRgdGPINCyIGVycm9yLmxvZyBuZ2lueCfQsC4g0Jo=?= =?UTF-8?B?0LDQuiDQv9C+0LHQvtGA0L7RgtGMPw==?= Message-ID: <68f3c68fd83fe09f6b8f8a3c86d112da.NginxMailingListRussian@forum.nginx.org> Здравствуйте, господа. Настроена связка nginx + php-fpm. Подскажите, пожалуйста, как можно nginx отучить сохранять в свой error.log сообщения об ошибках от php-fpm? Сейчас получается так: В файле /var/log/nginx/error.log выводится: 2014/07/07 22:02:06 [error] 19714#0: *10 FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected '{', expecting '(' in /home/example.com/www/phpinfo.php on line 25" while reading response header from upstream, client: 192.168.0.61, server: example.com, request: "GET /phpinfo.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm_example.com.sock:", host: "example.com" В файле /var/log/php5-fpm/error.log выводится: [07-Jul-2014 22:02:06] WARNING: [pool example.com] child 20676 said into stderr: "NOTICE: PHP message: PHP Parse error: syntax error, unexpected '{', expecting '(' in /home/example.com/www/phpinfo.php on line 25" То есть, по сути, информация дублируется. Хотелось бы порядок: чтоб у nginx и у php-fpm были ТОЛЬКО СВОИ сообщения об ошибках. И ТОЛЬКО В СВОИХ логах. Возможно ли это реализовать? P.S. Попробовал задать catch_workers_output = no. Из error.log php-fpm строчка убралась, но осталась в error.log nginx'а. Возможно ли сделать наоборот? С уважением, Геннадий. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251507,251507#msg-251507 From me at kemko.ru Mon Jul 7 18:27:44 2014 From: me at kemko.ru (=?UTF-8?B?0JTQvNC40YLRgNC40Lkg0JDQvdC00YDQtdC10LI=?=) Date: Mon, 7 Jul 2014 22:27:44 +0400 Subject: =?UTF-8?B?UmU6INCh0L7QvtCx0YnQtdC90LjRjyDQvtCxINC+0YjQuNCx0LrQsNGFINC+0YIg?= =?UTF-8?B?cGhwLWZwbSDQv9C40YjRg9GC0YHRjyDQsiBlcnJvci5sb2cgbmdpbngn0LAu?= =?UTF-8?B?INCa0LDQuiDQv9C+0LHQvtGA0L7RgtGMPw==?= In-Reply-To: <68f3c68fd83fe09f6b8f8a3c86d112da.NginxMailingListRussian@forum.nginx.org> References: <68f3c68fd83fe09f6b8f8a3c86d112da.NginxMailingListRussian@forum.nginx.org> Message-ID: Нужно не nginx заставлять не записывать ошибки, а отучивать php их сваливать их в fastcgi-поток. Кажется, оно: http://www.php.net/manual/ru/ini.core.php#ini.fastcgi.logging 7 июля 2014 г., 22:18 пользователь Sferg написал: > Здравствуйте, господа. Настроена связка nginx + php-fpm. Подскажите, > пожалуйста, как можно nginx отучить сохранять в свой error.log сообщения об > ошибках от php-fpm? Сейчас получается так: > > В файле /var/log/nginx/error.log выводится: > > 2014/07/07 22:02:06 [error] 19714#0: *10 FastCGI sent in stderr: "PHP > message: PHP Parse error: syntax error, unexpected '{', expecting '(' in > /home/example.com/www/phpinfo.php on line 25" while reading response > header > from upstream, client: 192.168.0.61, server: example.com, request: "GET > /phpinfo.php HTTP/1.1", upstream: > "fastcgi://unix:/var/run/php5-fpm_example.com.sock:", host: "example.com" > > В файле /var/log/php5-fpm/error.log выводится: > > [07-Jul-2014 22:02:06] WARNING: [pool example.com] child 20676 said into > stderr: "NOTICE: PHP message: PHP Parse error: syntax error, unexpected > '{', expecting '(' in /home/example.com/www/phpinfo.php on line 25" > > То есть, по сути, информация дублируется. Хотелось бы порядок: чтоб у nginx > и у php-fpm были ТОЛЬКО СВОИ сообщения об ошибках. И ТОЛЬКО В СВОИХ логах. > Возможно ли это реализовать? > > P.S. Попробовал задать catch_workers_output = no. Из error.log php-fpm > строчка убралась, но осталась в error.log nginx'а. Возможно ли сделать > наоборот? > > С уважением, Геннадий. > > Posted at Nginx Forum: > http://forum.nginx.org/read.php?21,251507,251507#msg-251507 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -------------- next part -------------- An HTML attachment was scrubbed... URL: From nginx-forum at nginx.us Tue Jul 8 13:19:28 2014 From: nginx-forum at nginx.us (lisua) Date: Tue, 08 Jul 2014 09:19:28 -0400 Subject: =?UTF-8?B?0JrQsNC6INC/0YDQuNCx0LjRgtGMIFBPU1QgIEhUVFAvMS4x?= Message-ID: Как прибить ботов с помощью Nginx без парсинга логов: 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:37 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:37 +0200] "POST HTTP/1.1" 400 166 "-" "-" 177.55.241.91 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" "-" 177.55.241.91 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 37.45.201.168 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" "-" 2.134.162.100 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" "-" 197.162.13.111 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" "-" 93.77.24.242 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" "-" 93.77.24.242 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" "-" 93.77.24.242 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" "-" Такое не помогло: if ($request_method = POST){ return 499; } Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251542,251542#msg-251542 From mdounin at mdounin.ru Tue Jul 8 13:45:38 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 8 Jul 2014 17:45:38 +0400 Subject: nginx-1.7.3 Message-ID: <20140708134538.GV1849@mdounin.ru> Изменения в nginx 1.7.3 08.07.2014 *) Добавление: weak entity tags теперь не удаляются при изменениях ответа, а strong entity tags преобразуются в weak. *) Добавление: ревалидация элементов кэша теперь, если это возможно, использует заголовок If-None-Match. *) Добавление: директива ssl_password_file. *) Исправление: при возврате ответа из кэша заголовок запроса If-None-Match игнорировался, если в ответе не было заголовка Last-Modified. *) Исправление: сообщения "peer closed connection in SSL handshake" при соединении с бэкендами логгировались на уровне info вместо error. *) Исправление: в модуле ngx_http_dav_module в nginx/Windows. *) Исправление: SPDY-соединения могли неожиданно закрываться, если использовалось кэширование. -- Maxim Dounin http://nginx.org/en/donation.html From anatoly at sonru.com Tue Jul 8 14:14:32 2014 From: anatoly at sonru.com (Anatoly Mikhaylov) Date: Tue, 8 Jul 2014 15:14:32 +0100 Subject: =?UTF-8?B?UmU6IFNQRFkg0LLQvNC10YHRgtC1INGBINCy0LrQu9GO0YfQtdC90L3Ri9C8IHBy?= =?UTF-8?B?b3h5X2NhY2hlX2J5cGFzcyAoIzQyOCk=?= In-Reply-To: <53BA8BEA.2040705@nginx.com> References: <482D278A-1A4D-47A9-B936-1E1786D37CCC@sonru.com> <2702734.o9QWP8dTeh@vbart-workstation> <1878949.JPPHYv9qVD@vbart-workstation> <1B285EBC-A43C-4D8A-84A1-CCE7FB1F034F@sonru.com> <5391C1B5.7060403@nginx.com> <5DE2A9DB-6BA7-45E6-BB3A-C4316AE2DFEF@sonru.com> <25619FF2-D441-4CF2-8290-88B68631C30E@sonru.com> <53A0493E.5040408@nginx.com> <53BA8BEA.2040705@nginx.com> Message-ID: <8A136DEA-9334-41BD-BBC7-43F9AB63EC1A@sonru.com> > On Jul 7, 2014, at 1:00 PM, Maxim Konovalov wrote: > >> On 6/17/14 5:57 PM, Maxim Konovalov wrote: >>> On 6/17/14 5:54 PM, Anatoly Mikhailov wrote: >>> >>>> On 06 Jun 2014, at 16:13, Anatoly Mikhailov wrote: >>>> >>>> >>>>> On 06 Jun 2014, at 14:27, Maxim Konovalov wrote: >>>>> >>>>> [...] >>>>>> начал ловить те же баги на не пропатченном Nginx на другом сервере >>>>>> с меньшей нагрузкой, этот патч в опен-сорсе очень бы не помешал! >>>>> Код в процессе внутреннего ревью. >>>> >>>> Отличная новость в пятницу, спасибо! >>> >>> Nginx 1.7.2 содержит именно этот багфикс? >> Не содержит. > JFYI, 1.7.3, выпуск которого назначен на завтра, будет с фиксом: > > http://mailman.nginx.org/pipermail/nginx-devel/2014-July/005540.html > http://trac.nginx.org/nginx/ticket/428 > Супер, спасибо! Также здесь решен вопрос с weak etags, золотой релиз! :) > -- > Maxim Konovalov > http://nginx.com > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru From chipitsine at gmail.com Tue Jul 8 14:28:43 2014 From: chipitsine at gmail.com (=?UTF-8?B?0JjQu9GM0Y8g0KjQuNC/0LjRhtC40L0=?=) Date: Tue, 8 Jul 2014 20:28:43 +0600 Subject: =?UTF-8?B?UmU6INCa0LDQuiDQv9GA0LjQsdC40YLRjCBQT1NUIEhUVFAvMS4x?= In-Reply-To: References: Message-ID: error_page 400 =444; ? 2014-07-08 19:19 GMT+06:00 lisua : > Как прибить ботов с помощью Nginx без парсинга логов: > > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:37 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:37 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 177.55.241.91 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 177.55.241.91 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 37.45.201.168 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > > Такое не помогло: > if ($request_method = POST){ > return 499; > } > > Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251542,251542#msg-251542 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru From nginx-forum at nginx.us Tue Jul 8 15:32:44 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 08 Jul 2014 11:32:44 -0400 Subject: nginx-1.7.3 In-Reply-To: <20140708134538.GV1849@mdounin.ru> References: <20140708134538.GV1849@mdounin.ru> Message-ID: <4e6efe4efe2c8cd1871af1e50d91ebfd.NginxMailingListRussian@forum.nginx.org> >Добавление: ревалидация элементов кэша теперь, если это возможно, использует заголовок If-None-Match. Отлично, спасибо! Когда появится данная версия в ваших пакетах для CentOS 6? В http://nginx.org/packages/mainline/centos/6/ её ещё нет. Кстати можно уже создавать новую папку (http://nginx.org/packages/mainline/centos/7/) для пакетов CentOS 7, на днях был релиз данной OS. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251548,251553#msg-251553 From vlad.shabanov at gmail.com Tue Jul 8 16:49:22 2014 From: vlad.shabanov at gmail.com (Vladislav Shabanov) Date: Tue, 8 Jul 2014 20:49:22 +0400 Subject: =?UTF-8?B?UmU6INCa0LDQuiDQv9GA0LjQsdC40YLRjCBQT1NUICBIVFRQLzEuMQ==?= In-Reply-To: References: Message-ID: Я сделал одну зону с ограничением на кол-во запросов в секунду для GET и другую для POST. Второе ограничение, разумеется, жощщще. От пионеров помогает. set $binary_remote_addr_post ""; if ($request_method = POST) { set $binary_remote_addr_post $binary_remote_addr; } limit_req_zone $binary_remote_addr zone=IPRATELIMIT:20m rate=20r/s; limit_req_zone $binary_remote_addr_post zone=IPRATELIMIT_POST:20m rate=2r/s; Влад 08 июля 2014 г., в 17:19, lisua написал(а): > Как прибить ботов с помощью Nginx без парсинга логов: > > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:35 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:36 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:37 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:37 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 177.55.241.91 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 177.55.241.91 - - [08/Jul/2014:14:54:38 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:39 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.105.91 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 37.45.201.168 - - [08/Jul/2014:14:54:40 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 2.134.162.100 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 197.162.13.111 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > 93.77.24.242 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > > Такое не помогло: > if ($request_method = POST){ > return 499; > } > > Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251542,251542#msg-251542 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -------------- next part -------------- An HTML attachment was scrubbed... URL: From vbart at nginx.com Tue Jul 8 16:59:08 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Tue, 08 Jul 2014 20:59:08 +0400 Subject: =?UTF-8?B?UmU6INCa0LDQuiDQv9GA0LjQsdC40YLRjCBQT1NUICBIVFRQLzEuMQ==?= In-Reply-To: References: Message-ID: <1632679.8xU0usW3N6@vbart-workstation> On Tuesday 08 July 2014 09:19:28 lisua wrote: > Как прибить ботов с помощью Nginx без парсинга логов: > > 2.134.162.100 - - [08/Jul/2014:14:54:34 +0200] "POST HTTP/1.1" 400 166 "-" > "-" [..] > 93.77.24.242 - - [08/Jul/2014:14:54:41 +0200] "POST HTTP/1.1" 400 166 "-" > "-" > > Такое не помогло: > if ($request_method = POST){ > return 499; > } > Из логов видно, что речи и вовсе не идет о POST запросе. Строчка "POST HTTP/1.1" вообще не является корректным HTTP запросом. С тем же успехом они могли бы слать любой абстрактный набор байт, на который nginx и так сразу возвращает 400-ую ошибку. -- Валентин Бартенев From nginx-forum at nginx.us Tue Jul 8 17:02:27 2014 From: nginx-forum at nginx.us (lisua) Date: Tue, 08 Jul 2014 13:02:27 -0400 Subject: =?UTF-8?B?UmU6INCa0LDQuiDQv9GA0LjQsdC40YLRjCBQT1NUIEhUVFAvMS4x?= In-Reply-To: <1632679.8xU0usW3N6@vbart-workstation> References: <1632679.8xU0usW3N6@vbart-workstation> Message-ID: <7d094289cb0f89e89aa702cfa0f34253.NginxMailingListRussian@forum.nginx.org> Подскажите как составить фильтр на корректность GET/POST запросов для Nginx Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251542,251557#msg-251557 From sb at nginx.com Tue Jul 8 17:10:00 2014 From: sb at nginx.com (Sergey Budnevitch) Date: Tue, 8 Jul 2014 21:10:00 +0400 Subject: nginx-1.7.3 In-Reply-To: <4e6efe4efe2c8cd1871af1e50d91ebfd.NginxMailingListRussian@forum.nginx.org> References: <20140708134538.GV1849@mdounin.ru> <4e6efe4efe2c8cd1871af1e50d91ebfd.NginxMailingListRussian@forum.nginx.org> Message-ID: <2F7FCA28-CEDE-44D3-AAA6-8083AE20C4D7@nginx.com> On 08 Jul 2014, at 19:32, S.A.N wrote: >> Добавление: ревалидация элементов кэша теперь, если это возможно, > использует заголовок If-None-Match. > > Отлично, спасибо! > > Когда появится данная версия в ваших пакетах для CentOS 6? > В http://nginx.org/packages/mainline/centos/6/ её ещё нет. Уже. > > Кстати можно уже создавать новую папку > (http://nginx.org/packages/mainline/centos/7/) для пакетов CentOS 7, на днях > был релиз данной OS. Протестировать нужно. From ufaweb at gmail.com Wed Jul 9 17:33:28 2014 From: ufaweb at gmail.com (=?UTF-8?B?0KDRg9GB0LvQsNC9INCo0LDRgNC40L/QvtCy?=) Date: Wed, 9 Jul 2014 23:33:28 +0600 Subject: nginx-1.7.3 In-Reply-To: <20140708134538.GV1849@mdounin.ru> References: <20140708134538.GV1849@mdounin.ru> Message-ID: 8 июля 2014 г., 19:45 пользователь Maxim Dounin написал: > Изменения в nginx 1.7.3 > 08.07.2014 > > *) Добавление: директива ssl_password_file. > А можно поинтересоваться, какой сценарий использования данной возможности? Т.е. при каком подходе хранение файла с паролем, будет более лучшим выбором, чем хранение ключа в открытом виде? -- С уважением, Шарипов Руслан. -------------- next part -------------- An HTML attachment was scrubbed... URL: From mdounin at mdounin.ru Wed Jul 9 18:17:28 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Wed, 9 Jul 2014 22:17:28 +0400 Subject: nginx-1.7.3 In-Reply-To: References: <20140708134538.GV1849@mdounin.ru> Message-ID: <20140709181728.GV1849@mdounin.ru> Hello! On Wed, Jul 09, 2014 at 11:33:28PM +0600, Руслан Шарипов wrote: > 8 июля 2014 г., 19:45 пользователь Maxim Dounin > написал: > > > Изменения в nginx 1.7.3 > > 08.07.2014 > > > > *) Добавление: директива ssl_password_file. > > > > А можно поинтересоваться, какой сценарий использования данной возможности? > Т.е. при каком подходе хранение файла с паролем, будет более лучшим > выбором, чем хранение ключа в открытом виде? В случае именно хранения файла - я знаю две причины использовать пароль в отдельном файле: - Чтобы по возможности не передавать ключ, если он вдруг где-то передаётся, в незашифрованном виде. Т.е. вопрос в основном упрощения использования правильных практик в других местах, не связанных непосредственно с работой сервера. - Когда какие-либо внутренние стандарты в компании требуют хранить ключи только в зашифрованном виде. Кроме того, совершенно не обязательно хранить файл с паролями - можно, например, использовать named pipe (man mkfifo). Либо же создавать файл на разделе в памяти после загрузки сервера. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Thu Jul 10 12:12:01 2014 From: nginx-forum at nginx.us (helgen09) Date: Thu, 10 Jul 2014 08:12:01 -0400 Subject: nginx + proxy Message-ID: <32d019e644d5ddd4771d1f10741c1def.NginxMailingListRussian@forum.nginx.org> У меня возникла следующая проблема есть группа пользователей, они выходят в интернет на один сайт (http://www.test.ru) через один proxy (192.168.10.1), у каждого пользователя соответственно в браузере прописан proxy (192.168.10.1). Могу ли я с помощью NGINX организовать доступ пользователей на сайт через прокси (чтобы каждый раз не прописывать пользователю proxy в браузере)? Т.к. конструкция типа: server { server_name test.ru; location /any/ { proxy_pass http://www.test.ru; } } не подойдет, как настроить NGINX через proxy (192.168.10.1)??? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251628,251628#msg-251628 From nginx-forum at nginx.us Thu Jul 10 15:39:44 2014 From: nginx-forum at nginx.us (warzoni) Date: Thu, 10 Jul 2014 11:39:44 -0400 Subject: =?UTF-8?B?TmdpbnggZW1iZWRkZWQgcGVybCDQvtGC0YHRg9GC0YHRgtCy0YPQtdGCIHJlZmVy?= =?UTF-8?B?ZXI=?= Message-ID: <1598dd65e648dda392eec8eb1ceb6b17.NginxMailingListRussian@forum.nginx.org> в документации не определенно referer вообще, глобальная переменная $http_referer не видна как получить проклятый referer? чтобы велосипед не изобретать что нужно сделать: нужно просто проверить данный реферер, на совпадение по домену. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251629,251629#msg-251629 From vbart at nginx.com Thu Jul 10 19:28:47 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Thu, 10 Jul 2014 23:28:47 +0400 Subject: =?UTF-8?B?UmU6IE5naW54IGVtYmVkZGVkIHBlcmwg0L7RgtGB0YPRgtGB0YLQstGD0LXRgiBy?= =?UTF-8?B?ZWZlcmVy?= In-Reply-To: <1598dd65e648dda392eec8eb1ceb6b17.NginxMailingListRussian@forum.nginx.org> References: <1598dd65e648dda392eec8eb1ceb6b17.NginxMailingListRussian@forum.nginx.org> Message-ID: <1919650.r6K4H6J6dA@vbart-laptop> On Thursday 10 July 2014 11:39:44 warzoni wrote: > в документации не определенно referer вообще, глобальная переменная > $http_referer не видна > > как получить проклятый referer? чтобы велосипед не изобретать > > что нужно сделать: нужно просто проверить данный реферер, на совпадение по > домену. > $r->header_in("Referer") -- Валентин Бартенев From mva at mva.name Fri Jul 11 07:20:44 2014 From: mva at mva.name (Vadim A. Misbakh-Soloviov) Date: Fri, 11 Jul 2014 14:20:44 +0700 Subject: nginx + proxy In-Reply-To: <32d019e644d5ddd4771d1f10741c1def.NginxMailingListRussian@forum.nginx.org> References: <32d019e644d5ddd4771d1f10741c1def.NginxMailingListRussian@forum.nginx.org> Message-ID: <2079208.9dON19EA2U@note> В письме от Чт, 10 июля 2014 08:12:01 пользователь helgen09 написал: > У меня возникла следующая проблема есть группа пользователей, они выходят в > интернет на один сайт (http://www.test.ru) через один proxy (192.168.10.1), > у каждого пользователя соответственно в браузере прописан proxy > (192.168.10.1). > Могу ли я с помощью NGINX организовать доступ пользователей на сайт через > прокси (чтобы каждый раз не прописывать пользователю proxy в браузере)? > Т.к. конструкция типа: > server { > server_name test.ru; > location /any/ { > proxy_pass http://www.test.ru; > } > } > > не подойдет, как настроить NGINX через proxy (192.168.10.1)??? Вообще, Вы хотите чего-то противоестественного, но раз уж начали ? если прокси прозрачный, то его просто можно прописать на хосте с NginX в hosts-файл, например. > > Posted at Nginx Forum: > http://forum.nginx.org/read.php?21,251628,251628#msg-251628 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -- Best regsrds, mva -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: This is a digitally signed message part. URL: From nginx-forum at nginx.us Fri Jul 11 09:20:57 2014 From: nginx-forum at nginx.us (helgen09) Date: Fri, 11 Jul 2014 05:20:57 -0400 Subject: nginx + proxy In-Reply-To: <2079208.9dON19EA2U@note> References: <2079208.9dON19EA2U@note> Message-ID: Да в том и дело что proxy не прозрачный, у каждого клиента на машине адрес proxy прописан вручную. Вот мучаюсь и никак не могу добится нормальной работы. Можно ли как-нибудь указать nginx что параметр location / { proxy_pass http://test.ru; } находится за proxy 192.168.10.1, иначе nginx соответсвенно пишет что host not found Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251628,251637#msg-251637 From gomeet at mail.ru Fri Jul 11 12:20:50 2014 From: gomeet at mail.ru (=?UTF-8?B?0JHQvtGB0YE=?=) Date: Fri, 11 Jul 2014 16:20:50 +0400 Subject: =?UTF-8?Q?Nginx_=D0=B8_CentOs?= Message-ID: <1405081250.539275946@f343.i.mail.ru> Добрый день уважаемые подписчики. Столкнулся с не совсем понятно проблемой в связке Nginx и CentOs. Имеем CentOS release 6.5 (Final) и nginx version: nginx/1.6.0. Nginx брался из репазитория nginx.org Пишем с нуля nginx.conf: http { server { } } Получаем ginx: [emerg] "http" directive is not allowed here in /etc/nginx/conf.d/nginx.conf:5 nginx: configuration file /etc/nginx/nginx.conf test failed Тоже самое для директив - user, events. ginx: [emerg] "events" directive is not allowed here in /etc/nginx/conf.d/nginx.conf:5 Если писать конструкцию: server { location / { root /data/www; } location /images/ { root /data; } } -  все проходит. Подскажите - что не так! Спасибо! -- Ваш Сергей -------------- next part -------------- An HTML attachment was scrubbed... URL: From yura at emict.com Fri Jul 11 12:37:17 2014 From: yura at emict.com (Yuriy Kashirin) Date: Fri, 11 Jul 2014 15:37:17 +0300 Subject: =?UTF-8?Q?Re=3A_Nginx_=D0=B8_CentOs?= In-Reply-To: <1405081250.539275946@f343.i.mail.ru> References: <1405081250.539275946@f343.i.mail.ru> Message-ID: <1963320.7eGsV7hVSd@uka-hp.localdomain> On 11 июля 2014 16:20:50 Босс wrote: > Добрый день уважаемые подписчики. > > Столкнулся с не совсем понятно проблемой в связке Nginx и CentOs. > > Имеем CentOS release 6.5 (Final) и nginx version: nginx/1.6.0. Nginx > брался из репазитория nginx.org > > Пишем с нуля nginx.conf: > > http { > server { > } > } > > Получаем > > ginx: [emerg] "http" directive is not allowed here in > /etc/nginx/conf.d/nginx.conf:5 nginx: configuration file ^^^^^^^^^^^^^^^^^ > /etc/nginx/nginx.conf test failed ^^^^^^^^^^ Вы не тот nginx.conf "с нуля" переписывали. Ваш новый файл инклудится оригинальным конфигом, то есть Вы пытаетесь определить http внутри http, которая описана в /etc/nginx/nginx.conf -- Best regards Yuriy Kashirin From nginx-forum at nginx.us Fri Jul 11 16:09:32 2014 From: nginx-forum at nginx.us (ex) Date: Fri, 11 Jul 2014 12:09:32 -0400 Subject: =?UTF-8?B?UmU6IE5naW54IGVtYmVkZGVkIHBlcmwg0L7RgtGB0YPRgtGB0YLQstGD0LXRgiBy?= =?UTF-8?B?ZWZlcmVy?= In-Reply-To: <1598dd65e648dda392eec8eb1ceb6b17.NginxMailingListRussian@forum.nginx.org> References: <1598dd65e648dda392eec8eb1ceb6b17.NginxMailingListRussian@forum.nginx.org> Message-ID: $http_имя произвольное поле заголовка запроса; последняя часть имени переменной соответствует имени поля, приведённому к нижнему регистру, с заменой символов тире на символы подчёркивания т.е. если нет $http_referer то в запросе нет такого заголовка.. Есть еще http://nginx.org/ru/docs/http/ngx_http_referer_module.html warzoni Wrote: ------------------------------------------------------- > в документации не определенно referer вообще, глобальная переменная > $http_referer не видна > > как получить проклятый referer? чтобы велосипед не изобретать > > что нужно сделать: нужно просто проверить данный реферер, на > совпадение по домену. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251629,251646#msg-251646 From nginx-forum at nginx.us Fri Jul 11 16:15:28 2014 From: nginx-forum at nginx.us (ex) Date: Fri, 11 Jul 2014 12:15:28 -0400 Subject: =?UTF-8?B?UmU6IE5naW54IGVtYmVkZGVkIHBlcmwg0L7RgtGB0YPRgtGB0YLQstGD0LXRgiBy?= =?UTF-8?B?ZWZlcmVy?= In-Reply-To: References: <1598dd65e648dda392eec8eb1ceb6b17.NginxMailingListRussian@forum.nginx.org> Message-ID: <95ded299684b120e92077c8a09288a79.NginxMailingListRussian@forum.nginx.org> Был не прав, пропустил "embedded perl".. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251629,251648#msg-251648 From nginx-forum at nginx.us Fri Jul 11 21:45:52 2014 From: nginx-forum at nginx.us (Budulianin) Date: Fri, 11 Jul 2014 17:45:52 -0400 Subject: =?UTF-8?B?0JrRjdGI0LjRgNC+0LLQsNC90LjQtSDQsiBuZ2lueA==?= Message-ID: Всем привет. Я пытаюсь понять, как организовать кэширование в nginx. Есть виртуалка, на ней Python-процесс на 8080 порту, там же nginx, запущенный от root, вот с такой конфигурацией: -------------------------------- user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { proxy_cache_path /var/cache/nginx keys_zone=one:10m loader_threshold=300 loader_files=200; proxy_temp_path /var/cache/nginx/temp 1 2; server { listen 6543; proxy_cache one; location / { proxy_pass http://localhost:8080; } } } -------------------------------- В /var/cache/nginx/temp появляются каталоги, после запуска на этом конфиге. Хожу по сайту(со своей машины на виртуалку), всё грузится, в error.log записей об ошибках нет. Но кеш так и не появляется в /var/cache/nginx. Проверял через утилиту ab, с кэшем в конфиге и без, одинаковый RPS, т.е. точно кэш не создаётся. Что я делаю не так? Чего не хватает в конфиге? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251653,251653#msg-251653 From nginx-forum at nginx.us Fri Jul 11 22:23:59 2014 From: nginx-forum at nginx.us (Budulianin) Date: Fri, 11 Jul 2014 18:23:59 -0400 Subject: =?UTF-8?B?UmU6INCa0Y3RiNC40YDQvtCy0LDQvdC40LUg0LIgbmdpbng=?= In-Reply-To: References: Message-ID: <196007014ceef7bdd63291fca7848f28.NginxMailingListRussian@forum.nginx.org> nginx/1.1.19 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251653,251656#msg-251656 From vbart at nginx.com Fri Jul 11 22:23:07 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Sat, 12 Jul 2014 02:23:07 +0400 Subject: =?UTF-8?B?UmU6INCa0Y3RiNC40YDQvtCy0LDQvdC40LUg0LIgbmdpbng=?= In-Reply-To: References: Message-ID: <1783782.n4shZZpIrA@vbart-laptop> On Friday 11 July 2014 17:45:52 Budulianin wrote: > Всем привет. > > Я пытаюсь понять, как организовать кэширование в nginx. > Есть виртуалка, на ней Python-процесс на 8080 порту, там же nginx, > запущенный от root, вот с такой конфигурацией: > -------------------------------- > user www-data; > worker_processes 4; > pid /var/run/nginx.pid; > > events { > worker_connections 768; > # multi_accept on; > } > > http { > proxy_cache_path /var/cache/nginx keys_zone=one:10m loader_threshold=300 > loader_files=200; > proxy_temp_path /var/cache/nginx/temp 1 2; > > server { > listen 6543; > proxy_cache one; > > location / { > proxy_pass http://localhost:8080; > } > } > } > -------------------------------- > > В /var/cache/nginx/temp появляются каталоги, после запуска на этом конфиге. > Хожу по сайту(со своей машины на виртуалку), всё грузится, в error.log > записей об ошибках нет. > Но кеш так и не появляется в /var/cache/nginx. > Проверял через утилиту ab, с кэшем в конфиге и без, одинаковый RPS, т.е. > точно кэш не создаётся. > > Что я делаю не так? Чего не хватает в конфиге? > [..] http://nginx.org/r/proxy_cache_valid/ru -- Валентин Бартенев From nginx-forum at nginx.us Fri Jul 11 22:51:29 2014 From: nginx-forum at nginx.us (Budulianin) Date: Fri, 11 Jul 2014 18:51:29 -0400 Subject: =?UTF-8?B?UmU6INCa0Y3RiNC40YDQvtCy0LDQvdC40LUg0LIgbmdpbng=?= In-Reply-To: <1783782.n4shZZpIrA@vbart-laptop> References: <1783782.n4shZZpIrA@vbart-laptop> Message-ID: <29da4a20e16f8d169604d921bfd52859.NginxMailingListRussian@forum.nginx.org> >Валентин Бартенев Спасибо за подсказку. Я тут нашёл похожий вопрос, но там конфиг был больше. У человека была проблема из-за proxy_buffering off; Я конфиг скопировал его и у меня заработал кэш, закомментил одну строчку http://nginx.org/r/proxy_cache_valid/ru И кэш перестал работать. Похоже действительно дело в proxy_cache_valid. Теперь дальше буду разбираться, спасибо. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251653,251660#msg-251660 From nginx-forum at nginx.us Fri Jul 11 23:03:28 2014 From: nginx-forum at nginx.us (nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k) Date: Fri, 11 Jul 2014 19:03:28 -0400 Subject: =?UTF-8?B?0J3QtSDRgNCw0LHQvtGC0LDQtdGCIGxpbWl0IHJlcQ==?= Message-ID: <22fcff1475c222a50a277a6707b99235.NginxMailingListRussian@forum.nginx.org> Возникла надобность использовать limit_req, но столкнулся с неприятным моментом работы ограничителя. В документации приводится пример: limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { location /search/ { limit_req zone=one; } } который (за отсутствием исчерпывающего описания) наталкивает на мысль, что указанный limit_req будет ограничивать частоту прихода запросов GET /search/, однако на практике это не так. Счётчик, указанный директивой limit_req_zone, является глобальным для $binary_remote_addr и накручивается независимо от запроса. Из-за этого если в одну и ту же секунду от одного и того же IP пришёл какой-то запрос и запрос GET /search/, последний будет отклонён - сработает limit_req, хотя он был единственным search-ем за эту секунду. Попробовал на опыте - действительно работает не так, как ожидалось: http { limit_req_zone $binary_remote_addr zone=limited:10m rate=1r/s; server { listen 80 default_server; location / { return 404; } location /123 { root /tmp/zzz; limit_req zone=limited nodelay; } } } bash$ touch /tmp/zzz/123 bash$ { curl -s -o /dev/null -D - localhost/123; curl -s -o /dev/null -D - localhost/123; } | fgrep HTTP HTTP/1.1 200 OK HTTP/1.1 503 Service Temporarily Unavailable bash$ { curl -s -o /dev/null -D - localhost/aaaaa; curl -s -o /dev/null -D - localhost/123; } | fgrep HTTP HTTP/1.1 404 Not Found HTTP/1.1 503 Service Temporarily Unavailable Вопрос: как задать ограничение для конкретных запросов ? К примеру есть задача: все запросы вида ./$ (оканчивающиеся на "/", за исключением корня) ограничить до 60 запросов/мин для каждого IP. Можно ли с помощью nginx это сделать ? Ну и было бы не плохо акцентировать на этом моменте внимание в документации. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251661,251661#msg-251661 From nginx-forum at nginx.us Fri Jul 11 23:11:27 2014 From: nginx-forum at nginx.us (nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k) Date: Fri, 11 Jul 2014 19:11:27 -0400 Subject: =?UTF-8?B?UmU6INCd0LUg0YDQsNCx0L7RgtCw0LXRgiBsaW1pdCByZXE=?= In-Reply-To: <22fcff1475c222a50a277a6707b99235.NginxMailingListRussian@forum.nginx.org> References: <22fcff1475c222a50a277a6707b99235.NginxMailingListRussian@forum.nginx.org> Message-ID: Да, забыл указать: версия nginx - 1.6.0 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251661,251662#msg-251662 From vbart at nginx.com Fri Jul 11 23:26:52 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Sat, 12 Jul 2014 03:26:52 +0400 Subject: =?UTF-8?B?UmU6INCd0LUg0YDQsNCx0L7RgtCw0LXRgiBsaW1pdCByZXE=?= In-Reply-To: <22fcff1475c222a50a277a6707b99235.NginxMailingListRussian@forum.nginx.org> References: <22fcff1475c222a50a277a6707b99235.NginxMailingListRussian@forum.nginx.org> Message-ID: <1853097.6sLu5T5CAT@vbart-laptop> On Friday 11 July 2014 19:03:28 nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k wrote: > Возникла надобность использовать limit_req, но столкнулся с неприятным > моментом работы ограничителя. В документации приводится пример: > > limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; > > server { > location /search/ { > limit_req zone=one; > } > } > > который (за отсутствием исчерпывающего описания) наталкивает на мысль, что > указанный limit_req будет ограничивать частоту прихода запросов GET > /search/, однако на практике это не так. > Счётчик, указанный директивой limit_req_zone, является глобальным для > $binary_remote_addr и накручивается независимо от запроса. Из-за этого если > в одну и ту же секунду от одного и того же IP пришёл какой-то запрос и > запрос GET /search/, последний будет отклонён - сработает limit_req, хотя он > был единственным search-ем за эту секунду. Нет, учитываются только запросы пришедшие в location с limit_req. > > Попробовал на опыте - действительно работает не так, как ожидалось: > > http { > limit_req_zone $binary_remote_addr zone=limited:10m rate=1r/s; > > server { > listen 80 default_server; > location / { return 404; } > location /123 { > root /tmp/zzz; > limit_req zone=limited nodelay; > } > } > } > > > bash$ touch /tmp/zzz/123 > > bash$ { curl -s -o /dev/null -D - localhost/123; curl -s -o /dev/null -D - > localhost/123; } | fgrep HTTP > HTTP/1.1 200 OK > HTTP/1.1 503 Service Temporarily Unavailable > > bash$ { curl -s -o /dev/null -D - localhost/aaaaa; curl -s -o /dev/null -D - > localhost/123; } | fgrep HTTP > HTTP/1.1 404 Not Found > HTTP/1.1 503 Service Temporarily Unavailable [..] Попробовал на 1.6.0 ваш пример с вашим конфигом: % { curl -s -o /dev/null -D - localhost/aaaaa; curl -s -o /dev/null -D - localhost/123; } | fgrep HTTP HTTP/1.1 404 Not Found HTTP/1.1 200 OK Что-то вы не так делаете. -- Валентин Бартенев From mva at mva.name Sat Jul 12 04:45:41 2014 From: mva at mva.name (Vadim A. Misbakh-Soloviov) Date: Sat, 12 Jul 2014 11:45:41 +0700 Subject: nginx + proxy In-Reply-To: References: <2079208.9dON19EA2U@note> Message-ID: <6798013.qDBh6uPOv6@note> В письме от Пт, 11 июля 2014 05:20:57 пользователь helgen09 написал: > Да в том и дело что proxy не прозрачный, у каждого клиента на машине адрес > proxy прописан вручную. Вот мучаюсь и никак не могу добится нормальной > работы. Можно ли как-нибудь указать nginx что параметр > location / { > proxy_pass http://test.ru; > } > > находится за proxy 192.168.10.1, иначе nginx соответсвенно пишет что host > not found на сколько мне известно, NginX не умеет ходить через прокси, хотя я бы на вашем месте попробовал всё-таки что-нибудь похожее на: > location / { > proxy_pass http://192.168.10.1; # возможно, со слешем на конце > Host test.ru; > } Иначе ? использовать всякие обётки типа proxychains и иже с ним. # а вообще, повторюсь, идея странная. -- Best regsrds, mva -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: This is a digitally signed message part. URL: From nginx-forum at nginx.us Sat Jul 12 10:13:43 2014 From: nginx-forum at nginx.us (nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k) Date: Sat, 12 Jul 2014 06:13:43 -0400 Subject: =?UTF-8?B?UmU6INCd0LUg0YDQsNCx0L7RgtCw0LXRgiBsaW1pdCByZXE=?= In-Reply-To: <1853097.6sLu5T5CAT@vbart-laptop> References: <1853097.6sLu5T5CAT@vbart-laptop> Message-ID: <3e5d7c9c0da9a563fd5a91afafd5f605.NginxMailingListRussian@forum.nginx.org> Да, действительно странно, сегодня пробую вчерашний тест - работает как и у вас. Вчера тестировал на версии 1.4.x, под конец обновился, nginx перезапускал руками, написало [OK]. Может каким-то магическим образом не перезапустился. Однако попробовал включить на живом сайте - снова проблемы: в error.log-е вижу записи о забаненых клиентах, делаю поиск их IP в access.log-е - находит 20..30 записей, в то время как в ограничении указано 60r/m. Попробовал снова тестовый вариант - теперь видно, что nginx оптимизирует значение ограничения, и 60r/m превращаются в 1r/s. Видимо для этого случая нужно использовать форму "1r/s burst=60" ? Тогда вопрос: через какое время nginx допускает повторное использование всплеска ? Хотя судя по всему burst - это просто размер буфера для приёма запросов перед обработкой. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251661,251667#msg-251667 From vbart at nginx.com Sat Jul 12 12:33:14 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Sat, 12 Jul 2014 16:33:14 +0400 Subject: =?UTF-8?B?UmU6INCd0LUg0YDQsNCx0L7RgtCw0LXRgiBsaW1pdCByZXE=?= In-Reply-To: <3e5d7c9c0da9a563fd5a91afafd5f605.NginxMailingListRussian@forum.nginx.org> References: <1853097.6sLu5T5CAT@vbart-laptop> <3e5d7c9c0da9a563fd5a91afafd5f605.NginxMailingListRussian@forum.nginx.org> Message-ID: <20670924.BgxIEkjeXx@vbart-laptop> On Saturday 12 July 2014 06:13:43 nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k wrote: > Да, действительно странно, сегодня пробую вчерашний тест - работает как и у > вас. Вчера тестировал на версии 1.4.x, под конец обновился, nginx > перезапускал руками, написало [OK]. Может каким-то магическим образом не > перезапустился. > > Однако попробовал включить на живом сайте - снова проблемы: в error.log-е > вижу записи о забаненых клиентах, делаю поиск их IP в access.log-е - находит > 20..30 записей, в то время как в ограничении указано 60r/m. > > Попробовал снова тестовый вариант - теперь видно, что nginx оптимизирует > значение ограничения, и 60r/m превращаются в 1r/s. Если у вас ограничение скорости на трассе 60км/ч, означает ли это, что нужно ехать целый час, прежде чем будет зафиксировано нарушение? 10 r/s также не означает, что вы можете прислать 10 запросов, а потом секунду подождать. Нет, это означает, что интервал между запросами должен быть не меньше 100мс. Там нет дискретности в 1 секунду или минуту, nginx не измеряет rps секундными или минутными интервалами. > > Видимо для этого случая нужно использовать форму "1r/s burst=60" ? Да это будет похоже. > Тогда вопрос: через какое время nginx допускает повторное использование > всплеска ? Хотя судя по всему burst - это просто размер буфера для приёма > запросов перед обработкой. Это не очень корректный вопрос. В nginx реализован классический алгоритм используемый в телекоммуникации, т.н. leaky bucket и burst в данном случае - это размер ведерка. При 1r/s burst=60 из ведерка постоянно течет вода со скоростью 1 капля в секунду, а его объем - 60 капель. 1 запрос добавляет 1 каплю. Перелив приводит к срабатыванию ограничения, а параметр nodelay влияет на то, будут ли запросы, наполнившие ведерко, обработаны сразу, или будут задержаны до момента вытекания капли из него. -- Валентин Бартенев From nginx-forum at nginx.us Sat Jul 12 16:57:12 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 12:57:12 -0400 Subject: =?UTF-8?B?cHJveHkgc3RvcnksIDMwNCwg0YHQsdGA0L7RgSDQutGN0YjQsA==?= Message-ID: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> Все привет. Решил попробовать proxy_store. Но возникли проблемы. Я хочу при помощи него, кэшировать статику. Составил конфигурацию для nginx/1.1.19: http { server { listen 6543; location / { proxy_pass http://localhost:8080; } location /static/ { root /var/cache/nginx; error_page 404 = /fetch$uri; } location /media/ { root /var/cache/nginx; error_page 404 = /fetch$uri; } location /fetch/ { internal; expires max; proxy_set_header If-None-Match ""; proxy_set_header If-Modified-Since ""; proxy_pass http://localhost:8080/; proxy_store on; proxy_store_access user:rw group:rw all:r; proxy_temp_path /var/cache/nginx/temp; alias /var/cache/nginx/; } } } Но что-то не учтено. Файлы сохраняются, при первом запросе, с этим нормально, при следующем запросе, браузер всё отображает и пишет 304, как я понимаю, он при первом запросе, сохранил у себя в кэше то что отдал ему nginx и теперь отображает это. Но если почистить кэш браузера, то nginx ничего не отдаёт, видимо он сравнивает дату файлов, которые у него закэшились и возвращает 304, но браузеру нечего взять, его кэш почистили. Подскажите пожалуйста, что подкоректировать, чтобы nginx отдавал из файлы из кэша, если в браузере кэш почистили? Ну или может, как-то по другому нужно сделать? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251675#msg-251675 From nginx-forum at nginx.us Sat Jul 12 18:44:23 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 14:44:23 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> Message-ID: >Но если почистить кэш браузера, то nginx ничего не отдаёт, поправочка - отдаёт, из кэша(root /var/cache/nginx;), но с Content-Type: text/plain Поэтому не работает, так как нужно. Нужно как-то изменить Content-Type Как nginx должен понять, что он отдаёт js и нужно выставить Content-Type: application/javascript; charset=UTF-8 ? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251677#msg-251677 From nginx-forum at nginx.us Sat Jul 12 18:47:33 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 14:47:33 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> Message-ID: <506b06b80d8c408ccbb76052a258afb4.NginxMailingListRussian@forum.nginx.org> > Content-Type: application/javascript; charset=UTF-8 там так же может быть картинка или css файл, поэтому Content-type уже другой будет Можно разделить на разные location по Content-type, но можно ли всё в одном location, чтобы nginx сам понимал? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251678#msg-251678 From nginx-forum at nginx.us Sat Jul 12 19:19:31 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 15:19:31 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <506b06b80d8c408ccbb76052a258afb4.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <506b06b80d8c408ccbb76052a258afb4.NginxMailingListRussian@forum.nginx.org> Message-ID: <7e3dca1469378b6c806e3d745367440a.NginxMailingListRussian@forum.nginx.org> Хотя нет, Content-Type он определяет, только без charset=UTF-8 Непонятно, почему браузер не распознаёт такие js файлы(из кэша nginx) он их принимает, но ни стилей(css) ни js не работают. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251679#msg-251679 From nginx-forum at nginx.us Sat Jul 12 19:32:02 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 15:32:02 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> Message-ID: <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> > proxy_store on; Может, лучше сделать через кеширования а не дублирования контента? Вот что вам нужно http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_valid Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251680#msg-251680 From nginx-forum at nginx.us Sat Jul 12 19:39:29 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 15:39:29 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> Message-ID: <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> Подключил mime типы nginx и всё стало норм. Только charset ещё как-то надо добавить. >S.A.N Это нужно использовать вместе с proxy_cache, если я правильно понимаю. Я вчера пытался сделать на основе этого, у меня получилось кэшировать JSON который отдавал сервак, но картинки так кэшировать не получилось. А чем лучше такой подход? Это ведь по сути тоже самое, только в proxy_store одним файлом лежит контент, а через proxy_cache по частям, по моему. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251681#msg-251681 From nginx-forum at nginx.us Sat Jul 12 19:42:25 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 15:42:25 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> Message-ID: <5351e86dd3c234bbc215ab64fc8892c4.NginxMailingListRussian@forum.nginx.org> Или proxy_cache не обязательно использовать вместе с proxy_cache_valid. Можно просто указать proxy_cache_valid, и каждый запрос будет кэшироваться? А в каком виде? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251682#msg-251682 From nginx-forum at nginx.us Sat Jul 12 19:51:29 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 15:51:29 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> Message-ID: > но картинки так кэшировать не > получилось. У вас картинки, хранятся в файлах на том же винте где работает Nginx? Если да, тогда нет смысла их сохранять в локал файлы, по сути будет тоже самое. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251683#msg-251683 From nginx-forum at nginx.us Sat Jul 12 19:57:06 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 15:57:06 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> Message-ID: <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> >У вас картинки, хранятся в файлах на том же винте где работает Nginx? Если да, тогда нет смысла их сохранять в локал файлы, по сути будет тоже самое. nginx'у не добраться к ним физически, они где-то в докере в приложении. Поэтому их надо как-то кэшировать. А чем proxy_cache_valid будет отличаться от proxy_store ? Они же всё равно на винте будут лежать. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251684#msg-251684 From nginx-forum at nginx.us Sat Jul 12 20:00:41 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 16:00:41 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> Message-ID: <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> proxy_cache, полностью сохраняет HTTP ответ от проксированого сервера, в локал файл и следующие запросы отдает из этого локал файла. Но если у вас картинки и так лежат на том же винте в той же файл системе, тогда нет никакого смысла их копировать в другую папку, потому что скорость отдачи будет такая же. По этому я спрашивал, где хранятся картинки. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251685#msg-251685 From nginx-forum at nginx.us Sat Jul 12 20:10:16 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 16:10:16 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> Message-ID: <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> >Но если у вас картинки и так лежат на том же винте в той же файл системе, тогда нет никакого смысла их копировать в другую папку, Это я понимаю, просто нет возможности отдавать их напрямую nginx. proxy_cache даст такую же скорость, как и proxy_store ? Просто мне ещё нужно будет выборочно обновлять изменённые файлы кэша. С proxy_store это легко, а с proxy_cache непонятно как искать нужный файл. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251688#msg-251688 From nginx-forum at nginx.us Sat Jul 12 20:31:01 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 16:31:01 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> Message-ID: > >Но если у вас картинки и так лежат на том же винте в той же файл > системе, тогда нет никакого смысла их копировать в другую папку, > Это я понимаю, просто нет возможности отдавать их напрямую nginx. > > proxy_cache даст такую же скорость, как и proxy_store ? > Просто мне ещё нужно будет выборочно обновлять изменённые файлы кэша. > С proxy_store это легко, а с proxy_cache непонятно как искать нужный > файл. Ясно, если статику отдает проксированый сервер по HTTP, тогда вам нужно использовать proxy_cache. В ручном режиме менять ничего не надо, в Nginx установите директиву proxy_cache_revalidate on, и Nginx сам будет делать запрос к проксированому серверу для получения новой версии файла. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251689#msg-251689 From nginx-forum at nginx.us Sat Jul 12 20:41:43 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 16:41:43 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> Message-ID: >Ясно, если статику отдает проксированый сервер по HTTP, Да, ситуация такая. >В ручном режиме менять ничего не надо, в Nginx установите директиву proxy_cache_revalidate on, и Nginx сам будет делать запрос к проксированому серверу для получения новой версии файла. Спасибо за советы, а как это будет происходить? Если я например поменял только один файл js. То как nginx узнает, что нужно его обновить в кэше? Получается, что nginx постоянно будет делать запрос к проксированному серверу и спрашивать его заголовки If-Modified-Since? и ?If-None-Match?? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251690#msg-251690 From nginx-forum at nginx.us Sat Jul 12 20:55:07 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 16:55:07 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> Message-ID: <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> > Спасибо за советы, а как это будет происходить? > Если я например поменял только один файл js. То как nginx узнает, что > нужно его обновить в кэше? > Получается, что nginx постоянно будет делать запрос к проксированному > серверу и спрашивать его заголовки If-Modified-Since? и > ?If-None-Match?? Да, но все в ваших руках, почитайте вот это http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_valid Например proxy_cache_valid 200 60m; Это означает, кешировать ответ со статусом 200 и через каждые 60m проводить ревалидацию, т.е делать запрос к проксированному серверу и спрашивать его заголовки If-Modified-Since и If-None-Match. Можете там поставить 1 год, любое приемлемое для вас значения. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251691#msg-251691 From nginx-forum at nginx.us Sat Jul 12 21:09:15 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 17:09:15 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> Message-ID: >Можете там поставить 1 год, любое приемлемое для вас значения. Мне нужно обновлять определённое значение кэша, сразу же, как я обновлю какой-то файл. Т.е. не по счётчику nginx. Т.е. когда я обновил всего одну картинку или js, мне нужно как-то сообщить nginx, чтобы он обновил только один определённый файл. Вот такую возможность мне нужно реализовать. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251692#msg-251692 From nginx-forum at nginx.us Sat Jul 12 21:21:34 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 17:21:34 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> Message-ID: >Т.е. когда я обновил всего одну картинку или js, мне нужно как-то сообщить nginx, чтобы он обновил только один определённый файл. http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_purge По-моему вот эта опция задает правила для запроса, после отправки которого чистится определённая часть кэша. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251693#msg-251693 From nginx-forum at nginx.us Sat Jul 12 21:40:07 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 17:40:07 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> Message-ID: > Мне нужно обновлять определённое значение кэша, сразу же, как я > обновлю какой-то файл. Т.е. не по счётчику nginx. > > Т.е. когда я обновил всего одну картинку или js, мне нужно как-то > сообщить nginx, чтобы он обновил только один определённый файл. > Вот такую возможность мне нужно реализовать. Если вам нужно мгновенное обновления кеша и вы не хотите чтобы Nginx часто делал запросы на ревалидацию, тогда возможно стоит пойти другим путем, при изменении файла, в HTML странице к именам файлов (js, img) добавлять версию например так main.js?version=1... Тогда в кеш будет сразу попадать новые версии файлов, старые со временем удалятся. Если в имена файлом ставить номер версии не можете, тогда есть другой вариант, проксируемый сервер например Apache, на запросы статики должен отдавать заголовки, в котором укажет минимал время жизни кеша например max-age=1 и будет отдавать Last-Modified, тогда Nginx будет через каждую секунду проводить ревалидацию кеша для этого файла, если файл изменился, обновится только этот файл, другие файлы кеша это не затронет. proxy_cache_purge на коммерческой основе. Но самый правильный вариант, если статик файлы на том же винте, отдавать их напрямую и ничего не выдумывать. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251694#msg-251694 From nginx-forum at nginx.us Sat Jul 12 21:58:50 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 17:58:50 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> Message-ID: >в HTML странице к именам файлов (js, img) добавлять версию например так main.js?version=1... Может быть как вариант > проксируемый сервер например Apache, на запросы статики должен отдавать заголовки Apache же откуда-то нужно брать эти заголовки, получается ему нужно опрашивать приложение. Если я правильно понял, то придёт запрос на статику к nginx он его отправит к Apache, Apache сделает запрос заголовка Last-Modified, добавит к нему max-age=1 и тогда nginx будет повторять эту цепочку каждую секунду. По-моему слишком закручено, для такой задачи. >proxy_cache_purge на коммерческой основе. Жаль Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251695#msg-251695 From nginx-forum at nginx.us Sat Jul 12 22:18:39 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 18:18:39 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> Message-ID: <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> > Если я правильно понял, то придёт запрос на статику к nginx он его > отправит к Apache, Apache сделает запрос заголовка Last-Modified, > добавит к нему max-age=1 и тогда nginx будет повторять эту цепочку > каждую секунду. > > По-моему слишком закручено, для такой задачи. Nginx, будет делать запрос к Apache, только когда приходит запрос на Nginx, сам Nginx лишних запросов не генерит к Apache. Т.е если на сайте посещаемость больше или равна 1 RPS, тогда Nginx будет делать запросы к Apache со скоростью не больше 1 RPS, если посещаемость меньше, тогда и запросов к Apache меньше. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251696#msg-251696 From nginx-forum at nginx.us Sat Jul 12 22:40:39 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 18:40:39 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> Message-ID: <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> >Nginx, будет делать запрос к Apache, Вы наверно имели в виду, поставить Apache рядом со статикой приложения, чтобы он обращался к ней напрямую, потому что у nginx нету к ней физ доступа. Если Apache будет обращаться к самому приложению, которое отдаёт статику, то это может делать и сам nginx, но тогда будет нежелательное обращение к приложению. Статика находится в самом приложении и достать в отдельную директорию её нельзя. Поэтому ищу решения с кэшем nginx. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251697#msg-251697 From nginx-forum at nginx.us Sat Jul 12 22:48:35 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 18:48:35 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> Message-ID: > Статика находится в самом приложении и достать в отдельную директорию > её нельзя. Поэтому ищу решения с кэшем nginx. Тогда все нормально, вам просто нужно настроить механизм кеширования в Nginx, если ваше приложения общается с Nginx по HTTP тогда Apache конечно ненужен. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251698#msg-251698 From nginx-forum at nginx.us Sat Jul 12 23:21:00 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 19:21:00 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> Message-ID: <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> Я начал разбираться с proxy_store, потому что у меня не получилось закэшировать статику при помощи proxy_cache. И сейчас опять не вызодит. Может быть proxy_cache умеет только html страниы кэшить? Вот простой конфиг. http { proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static_cache:100m inactive=120m max_size=500M; server { listen 6543; # location / { # proxy_pass http://localhost:8080; # } location / { expires 60d; proxy_pass http://localhost:8080; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache static_cache; proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri"; proxy_cache_valid 1d; } } } В итоге при одном запросе главной страницы, создаются всего 3 файла, один с пустым запросом, второй со странице html и один с JSON. Но на этой странице, куча запросов от статики и JS. Браузер показывает, что все они прогрузились норм. А если location ставить конкретно на статику /static/ тогда вообще кэш не создаётся. Почему картинки и JS не кэшируются? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251699#msg-251699 From nginx-forum at nginx.us Sat Jul 12 23:23:41 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 19:23:41 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> Message-ID: <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> Куков в запросах нет. Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Cache-Control:max-age=0 Connection:keep-alive Host:localhost:6543 User-Agent:Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251700#msg-251700 From nginx-forum at nginx.us Sat Jul 12 23:32:17 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 19:32:17 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> Message-ID: <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> Заголовки запроса не так интересны, вы напишите здесь, HTTP заголовки ответа от вашего приложения. И назначите такой ключ для кеша proxy_cache_key "$host$uri$is_args$args" Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251701#msg-251701 From nginx-forum at nginx.us Sat Jul 12 23:40:07 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 19:40:07 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> Message-ID: <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> Ваш ключ недопустим, поставил такой proxy_cache_key $scheme$proxy_host$uri$is_args$args; Ответ: Cache-Control:max-age=5184000 Connection:keep-alive Content-Length:84280 Content-Type:application/javascript; charset=UTF-8 Date:Sat, 12 Jul 2014 23:38:04 GMT Expires:Wed, 10 Sep 2014 23:38:04 GMT Last-Modified:Thu, 01 May 2014 17:11:50 GMT Pragma:no-cache Server:nginx/1.7.3 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251702#msg-251702 From nginx-forum at nginx.us Sun Jul 13 00:03:44 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 20:03:44 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> Message-ID: <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> Budulianin Wrote: ------------------------------------------------------- > Ваш ключ недопустим, поставил такой proxy_cache_key > $scheme$proxy_host$uri$is_args$args; Страно, у меня fastcgi_cache_key стоит "$host$uri$is_args$args" и все норм > > Ответ: > > Cache-Control:max-age=5184000 > Connection:keep-alive > Content-Length:84280 > Content-Type:application/javascript; charset=UTF-8 > Date:Sat, 12 Jul 2014 23:38:04 GMT > Expires:Wed, 10 Sep 2014 23:38:04 GMT > Last-Modified:Thu, 01 May 2014 17:11:50 GMT > Pragma:no-cache > Server:nginx/1.7.3 Ваши значения в заголовках Expires и Pragma, запрещают кеширования, их нужно изменить. Убрать Pragma:no-cache, в Expires поставить дату, большую от текущей даты (на столько больше как ваш надо для proxy_cache_valid) Или просто удалите эти заголовки если невозможно в приложении изменить их значения. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251703#msg-251703 From nginx-forum at nginx.us Sun Jul 13 00:22:33 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 20:22:33 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> Message-ID: <2f201026f6ccad47e08310222da056ae.NginxMailingListRussian@forum.nginx.org> >Страно, у меня fastcgi_cache_key стоит "$host$uri$is_args$args" и все норм Теперь поставил, всё норм, ошибся наверно. >Ваши значения в заголовках Expires и Pragma, запрещают кеширования, их нужно изменить. Expires:Wed, 10 Sep 2014 23:38:04 GMT - сентябрь. Сделал вот так http { proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static_cache:100m inactive=120m max_size=500M; server { listen 6543; # location / { # proxy_pass http://localhost:8080; # } location / { expires max; proxy_pass http://localhost:8080; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache static_cache; proxy_cache_key "$host$uri$is_args$args"; proxy_cache_valid 1d; proxy_ignore_headers Cache-Control; } } } изменил только proxy_ignore_headers Cache-Control; expires max; Но Pragma no cache в ответе осталась. Но почему то появился кэш от всех запросов. Теперь вся статика норм закэшилась. А ответ не изменился вроде бы. Непонятно. Cache-Control:max-age=315360000 Connection:keep-alive Content-Length:84280 Content-Type:application/javascript; charset=UTF-8 Date:Sun, 13 Jul 2014 00:20:43 GMT Expires:Thu, 31 Dec 2037 23:55:55 GMT Last-Modified:Thu, 01 May 2014 17:11:50 GMT Pragma:no-cache Server:nginx/1.7.3 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251704#msg-251704 From nginx-forum at nginx.us Sun Jul 13 00:26:13 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 20:26:13 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <2f201026f6ccad47e08310222da056ae.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> <2f201026f6ccad47e08310222da056ae.NginxMailingListRussian@forum.nginx.org> Message-ID: <45a33f391fbc8a257336e53d5673e6f4.NginxMailingListRussian@forum.nginx.org> Спрятать Pragma:no-cache, можно директивой proxy_hide_header http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_hide_header Так с кешем все нормально, все что нужно кешится? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251705#msg-251705 From nginx-forum at nginx.us Sun Jul 13 00:33:37 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 20:33:37 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <45a33f391fbc8a257336e53d5673e6f4.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> <2f201026f6ccad47e08310222da056ae.NginxMailingListRussian@forum.nginx.org> <45a33f391fbc8a257336e53d5673e6f4.NginxMailingListRussian@forum.nginx.org> Message-ID: <7ec4c47fb5e69af0d3bd1bc9c66027eb.NginxMailingListRussian@forum.nginx.org> >Так с кешем все нормально, все что нужно кешится? Да, спасибо большое, без ваших подсказок, я бы ещё долго ковырялся. В итоге без этой строчки не работает proxy_ignore_headers Cache-Control; Похоже, приложение говорит так nginx не кешить и он не кэшит. А эта строчка игнорирует заголовок и nginx кэшит. А как проверить, что именно из кэша отдаётся статика, а не к приложению идёт запрос? с proxy_store можно было просто перекрыть путь, а тут так не получится. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251706#msg-251706 From nginx-forum at nginx.us Sun Jul 13 00:40:56 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 20:40:56 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <7ec4c47fb5e69af0d3bd1bc9c66027eb.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> <2f201026f6ccad47e08310222da056ae.NginxMailingListRussian@forum.nginx.org> <45a33f391fbc8a257336e53d5673e6f4.NginxMailingListRussian@forum.nginx.org> <7ec4c47fb5e69af0d3bd1bc9c66027eb.NginxMailingListRussian@forum.nginx.org> Message-ID: > В итоге без этой строчки не работает proxy_ignore_headers > Cache-Control; > > Похоже, приложение говорит так nginx не кешить и он не кэшит. > А эта строчка игнорирует заголовок и nginx кэшит. Да, так и есть. > А как проверить, что именно из кэша отдаётся статика, а не к > приложению идёт запрос? поставьте директиву - proxy_cache_use_stale error http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_use_stale Выключите ваше приложения, очистите кеш браузера, и попробуйте загрузить статику, если Nginx отдаст, значит он взял её из кеша (ваше приложения не работает) если нет, тогда два варианта или на этот файл ещё нет кеша или что-то не так настроили. Директива - proxy_cache_use_stale, полезная советую её оставить на продакшине, в этом случаи даже если приложения упало, Nginx будет отдавать контент из кеша и все будет ок. Так же советую настроить proxy_cache_lock on http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_lock Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251707#msg-251707 From nginx-forum at nginx.us Sun Jul 13 00:54:38 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 20:54:38 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> <2f201026f6ccad47e08310222da056ae.NginxMailingListRussian@forum.nginx.org> <45a33f391fbc8a257336e53d5673e6f4.NginxMailingListRussian@forum.nginx.org> <7ec4c47fb5e69af0d3bd1bc9c66027eb.NginxMailingListRussian@forum.nginx.org> Message-ID: >поставьте директиву - proxy_cache_use_stale error Поставил, вырубил приложение, на главной странице 502, а статика отдаётся, прикольно. >Так же советую настроить proxy_cache_lock on Да, я тут читал, что без неё много запросов может быть лишних. Мне ещё нужно рассмотреть вариант хранения кэша в памяти. Если я каталог в который nginx пишет, просто монтирую в память, это нормальный вариант? Или какие-то другие варианты есть, чтобы nginx хранил кэш в памяти?(не считая memcached и подобное) Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251708#msg-251708 From nginx-forum at nginx.us Sun Jul 13 00:57:28 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 20:57:28 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> <2f201026f6ccad47e08310222da056ae.NginxMailingListRussian@forum.nginx.org> <45a33f391fbc8a257336e53d5673e6f4.NginxMailingListRussian@forum.nginx.org> <7ec4c47fb5e69af0d3bd1bc9c66027eb.NginxMailingListRussian@forum.nginx.org> Message-ID: <219c1c820e39548d19751f7fc53bfe39.NginxMailingListRussian@forum.nginx.org> Например прописать в fstab tmpfs /var/cache/nginx/ram tmpfs defaults,nodev,nosuid,size=2G 0 0 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251709#msg-251709 From nginx-forum at nginx.us Sun Jul 13 01:03:08 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 21:03:08 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> <2f201026f6ccad47e08310222da056ae.NginxMailingListRussian@forum.nginx.org> <45a33f391fbc8a257336e53d5673e6f4.NginxMailingListRussian@forum.nginx.org> <7ec4c47fb5e69af0d3bd1bc9c66027eb.NginxMailingListRussian@forum.nginx.org> Message-ID: <856b1b1cc6a8b3db6723d6f55f27d812.NginxMailingListRussian@forum.nginx.org> > Поставил, вырубил приложение, на главной странице 502, а статика > отдаётся, прикольно. Так может быть, есть смысл и все остальные страницы кешировать, опыт у вас уже есть. > Мне ещё нужно рассмотреть вариант хранения кэша в памяти. > Если я каталог в который nginx пишет, просто монтирую в память, это > нормальный вариант? Если есть много свободной памяти, можете всё там хранить, но советую провести тест на ab, чтобы убедится что оно того стоит. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251710#msg-251710 From nginx-forum at nginx.us Sun Jul 13 01:11:58 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 21:11:58 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <856b1b1cc6a8b3db6723d6f55f27d812.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> <2f201026f6ccad47e08310222da056ae.NginxMailingListRussian@forum.nginx.org> <45a33f391fbc8a257336e53d5673e6f4.NginxMailingListRussian@forum.nginx.org> <7ec4c47fb5e69af0d3bd1bc9c66027eb.NginxMailingListRussian@forum.nginx.org> <856b1b1cc6a8b3db6723d6f55f27d812.NginxMailingListRussian@forum.nginx.org> Message-ID: <112c4ba26d05e4c695e3fbe855d76e31.NginxMailingListRussian@forum.nginx.org> >Так может быть, есть смысл и все остальные страницы кешировать, опыт у вас уже есть. Все странички динамические, но я знаю, что есть смысл кэшить и их, но только на малый срок(5-10 минут) По крайней мере, некоторые так делают. Но такие решения зависят не от меня, я всего лишь Junior разраб. Я уже предлагал страницы кэшить, мне сказали что они динамические и типа это не надо. >Если есть много свободной памяти, можете всё там хранить, но советую провести тест на ab, чтобы убедится что оно того стоит. Просто я пока не знаю других способов, кроме как монтировать в память, но может они есть? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251711#msg-251711 From nginx-forum at nginx.us Sun Jul 13 01:20:13 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sat, 12 Jul 2014 21:20:13 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <112c4ba26d05e4c695e3fbe855d76e31.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> <2f201026f6ccad47e08310222da056ae.NginxMailingListRussian@forum.nginx.org> <45a33f391fbc8a257336e53d5673e6f4.NginxMailingListRussian@forum.nginx.org> <7ec4c47fb5e69af0d3bd1bc9c66027eb.NginxMailingListRussian@forum.nginx.org> <856b1b1cc6a8b3db6723d6f55f27d812.NginxMailingListRussian@forum.nginx.org> <112c4ba26d05e4c695e3fbe855d76e31.NginxMailingListRussian@forum.nginx.org> Message-ID: <2430033c45f0bec6267533e83bf472e5.NginxMailingListRussian@forum.nginx.org> > Просто я пока не знаю других способов, кроме как монтировать в память, > но может они есть? Если у вас SSD, или отдача статика происходит за 5-15ms, смысла забирать память под статику я особо не вижу, лучше её отдать приложению и/или БД, но опять же проведите нагрузочное тестирования с макс уникал юрл, чтобы папка кеша была забита полностью, тогда вы увидите предел производительности. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251712#msg-251712 From nginx-forum at nginx.us Sun Jul 13 01:27:49 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sat, 12 Jul 2014 21:27:49 -0400 Subject: =?UTF-8?B?UmU6IHByb3h5IHN0b3J5LCAzMDQsINGB0LHRgNC+0YEg0LrRjdGI0LA=?= In-Reply-To: <2430033c45f0bec6267533e83bf472e5.NginxMailingListRussian@forum.nginx.org> References: <54b93a9dbfdafd8d6d9b139679a55db8.NginxMailingListRussian@forum.nginx.org> <7791d2f5574f554ea2b40bd7da54a17d.NginxMailingListRussian@forum.nginx.org> <4cf04fcf65de5909ad5f37fecd568b94.NginxMailingListRussian@forum.nginx.org> <874d597775871e2c106f55bbe791a4dd.NginxMailingListRussian@forum.nginx.org> <5d3cfc0026861abd58f07c728f5d7ba6.NginxMailingListRussian@forum.nginx.org> <587ca401b85658fd66c630c44753eaec.NginxMailingListRussian@forum.nginx.org> <79fe0a600af0bf711c286a0d6b57e3af.NginxMailingListRussian@forum.nginx.org> <273cfaf3c25d177934dfbb6efe54c055.NginxMailingListRussian@forum.nginx.org> <0de5697523ec94dcb7f46e79063bc40f.NginxMailingListRussian@forum.nginx.org> <58ee31da186234a2ff9f91b24b7b9d67.NginxMailingListRussian@forum.nginx.org> <3ccc4236063e8b49c379b155134461ae.NginxMailingListRussian@forum.nginx.org> <98ff71bba049361c8758d253f5f4eed6.NginxMailingListRussian@forum.nginx.org> <1d302ceac145eee222ec352219114e4f.NginxMailingListRussian@forum.nginx.org> <09a5a3b089062b1f8a482f718572787d.NginxMailingListRussian@forum.nginx.org> <2f201026f6ccad47e08310222da056ae.NginxMailingListRussian@forum.nginx.org> <45a33f391fbc8a257336e53d5673e6f4.NginxMailingListRussian@forum.nginx.org> <7ec4c47fb5e69af0d3bd1bc9c66027eb.NginxMailingListRussian@forum.nginx.org> <856b1b1cc6a8b3db6723d6f55f27d812.NginxMailingListRussian@forum.nginx.org> <112c4ba26d05e4c695e3fbe855d76e31.NginxMailingListRussian@forum.nginx.org> <2430033c45f0bec6267533e83bf472e5.NginxMailingListRussian@forum.nginx.org> Message-ID: <54efa847efc0797c10d792dd5a98f00c.NginxMailingListRussian@forum.nginx.org> >тогда вы увидите предел производительности. Хорошо, спасибо ещё раз, за помощь. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251675,251713#msg-251713 From nginx-forum at nginx.us Sun Jul 13 12:41:26 2014 From: nginx-forum at nginx.us (nNgzlTtv3k5lzmKRvlmS22tSl8sJr68k) Date: Sun, 13 Jul 2014 08:41:26 -0400 Subject: =?UTF-8?B?UmU6INCd0LUg0YDQsNCx0L7RgtCw0LXRgiBsaW1pdCByZXE=?= In-Reply-To: <20670924.BgxIEkjeXx@vbart-laptop> References: <20670924.BgxIEkjeXx@vbart-laptop> Message-ID: <07b77de4a333984ad870f607e6234be8.NginxMailingListRussian@forum.nginx.org> Теперь механизм ограничения стал ясен, большое спасибо за разъяснения ! Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251661,251716#msg-251716 From nginx-forum at nginx.us Sun Jul 13 19:42:50 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sun, 13 Jul 2014 15:42:50 -0400 Subject: =?UTF-8?B?0JrQsNC6INC+0L/RgNC10LTQtdC70LjRgtGMLCDRgdC60L7Qu9GM0LrQviDRg9C2?= =?UTF-8?B?0LUg0YXRgNCw0L3QuNGC0YHRjyDQutGN0Yg/?= Message-ID: <6f6054cdd7da2618d82e5655055fa225.NginxMailingListRussian@forum.nginx.org> Всем привет. Интересует вопрос. Как можно определить, когда был создан кэш? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251724,251724#msg-251724 From nginx-forum at nginx.us Sun Jul 13 20:06:50 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sun, 13 Jul 2014 16:06:50 -0400 Subject: =?UTF-8?B?UmU6INCa0LDQuiDQvtC/0YDQtdC00LXQu9C40YLRjCwg0YHQutC+0LvRjNC60L4g?= =?UTF-8?B?0YPQttC1INGF0YDQsNC90LjRgtGB0Y8g0LrRjdGIPw==?= In-Reply-To: <6f6054cdd7da2618d82e5655055fa225.NginxMailingListRussian@forum.nginx.org> References: <6f6054cdd7da2618d82e5655055fa225.NginxMailingListRussian@forum.nginx.org> Message-ID: Если приложения отдает заголовок Last-Modified, он сохраняется в кеше, его значения можно получить в заголовке If-Modified-Since или в конфиге Nginx переменная $upstream_cache_last_modified. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251724,251726#msg-251726 From nginx-forum at nginx.us Sun Jul 13 20:20:55 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sun, 13 Jul 2014 16:20:55 -0400 Subject: =?UTF-8?B?UmU6INCa0LDQuiDQvtC/0YDQtdC00LXQu9C40YLRjCwg0YHQutC+0LvRjNC60L4g?= =?UTF-8?B?0YPQttC1INGF0YDQsNC90LjRgtGB0Y8g0LrRjdGIPw==?= In-Reply-To: References: <6f6054cdd7da2618d82e5655055fa225.NginxMailingListRussian@forum.nginx.org> Message-ID: <9d04459fb570720831d324953b53ed94.NginxMailingListRussian@forum.nginx.org> Но в заголовках Last-Modified и If-Modified-Since хранится последняя дата изменения файла. Эта дата не равна дате создания кэша. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251724,251728#msg-251728 From nginx-forum at nginx.us Sun Jul 13 20:30:45 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sun, 13 Jul 2014 16:30:45 -0400 Subject: =?UTF-8?B?UmU6INCa0LDQuiDQvtC/0YDQtdC00LXQu9C40YLRjCwg0YHQutC+0LvRjNC60L4g?= =?UTF-8?B?0YPQttC1INGF0YDQsNC90LjRgtGB0Y8g0LrRjdGIPw==?= In-Reply-To: <9d04459fb570720831d324953b53ed94.NginxMailingListRussian@forum.nginx.org> References: <6f6054cdd7da2618d82e5655055fa225.NginxMailingListRussian@forum.nginx.org> <9d04459fb570720831d324953b53ed94.NginxMailingListRussian@forum.nginx.org> Message-ID: <75eabbc34d0ea4556782f09830cb5e0b.NginxMailingListRussian@forum.nginx.org> Да, это дата модификации контента, она может и не быть равна дате создания кеша, зачем вам именно дата создания кеша? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251724,251729#msg-251729 From nginx-forum at nginx.us Sun Jul 13 20:40:09 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sun, 13 Jul 2014 16:40:09 -0400 Subject: =?UTF-8?B?UmU6INCa0LDQuiDQvtC/0YDQtdC00LXQu9C40YLRjCwg0YHQutC+0LvRjNC60L4g?= =?UTF-8?B?0YPQttC1INGF0YDQsNC90LjRgtGB0Y8g0LrRjdGIPw==?= In-Reply-To: <75eabbc34d0ea4556782f09830cb5e0b.NginxMailingListRussian@forum.nginx.org> References: <6f6054cdd7da2618d82e5655055fa225.NginxMailingListRussian@forum.nginx.org> <9d04459fb570720831d324953b53ed94.NginxMailingListRussian@forum.nginx.org> <75eabbc34d0ea4556782f09830cb5e0b.NginxMailingListRussian@forum.nginx.org> Message-ID: На самом деле незачем =) Но наверно можно узнать только по самому файлу кэша. Я немного не так понял задачу. Мне нужно узнать, какими заголовками задавать время хранения кэша, поподробнее. Я знаю, что на это влияют Expires, Cache-Control, Pragma Каким-то образом Set-Cookie и ещё X-Accel-Expires. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251724,251730#msg-251730 From nginx-forum at nginx.us Sun Jul 13 20:51:27 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sun, 13 Jul 2014 16:51:27 -0400 Subject: =?UTF-8?B?UmU6INCa0LDQuiDQvtC/0YDQtdC00LXQu9C40YLRjCwg0YHQutC+0LvRjNC60L4g?= =?UTF-8?B?0YPQttC1INGF0YDQsNC90LjRgtGB0Y8g0LrRjdGIPw==?= In-Reply-To: References: <6f6054cdd7da2618d82e5655055fa225.NginxMailingListRussian@forum.nginx.org> <9d04459fb570720831d324953b53ed94.NginxMailingListRussian@forum.nginx.org> <75eabbc34d0ea4556782f09830cb5e0b.NginxMailingListRussian@forum.nginx.org> Message-ID: <82e88b0e71321dd32c5bbbf234e13a25.NginxMailingListRussian@forum.nginx.org> Cache-Control: max-age=сколько секунд, кеш считается валидным, после истечения этого времени проводится ревалидации Expires: GMT дата, после истечения этой даты проводится ревалидации Pragma - это костыльный заголовок который вообще не стоит использовать для кеширования Материал для обучения http://smarly.net/forum/asp-net-article/thread5/uchebnik-keshirovaniya Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251724,251731#msg-251731 From nginx-forum at nginx.us Sun Jul 13 20:55:30 2014 From: nginx-forum at nginx.us (Budulianin) Date: Sun, 13 Jul 2014 16:55:30 -0400 Subject: =?UTF-8?B?UmU6INCa0LDQuiDQvtC/0YDQtdC00LXQu9C40YLRjCwg0YHQutC+0LvRjNC60L4g?= =?UTF-8?B?0YPQttC1INGF0YDQsNC90LjRgtGB0Y8g0LrRjdGIPw==?= In-Reply-To: <82e88b0e71321dd32c5bbbf234e13a25.NginxMailingListRussian@forum.nginx.org> References: <6f6054cdd7da2618d82e5655055fa225.NginxMailingListRussian@forum.nginx.org> <9d04459fb570720831d324953b53ed94.NginxMailingListRussian@forum.nginx.org> <75eabbc34d0ea4556782f09830cb5e0b.NginxMailingListRussian@forum.nginx.org> <82e88b0e71321dd32c5bbbf234e13a25.NginxMailingListRussian@forum.nginx.org> Message-ID: >Pragma - это костыльный заголовок который вообще не стоит использовать для кеширования Он для HTTP 1.0 В HTTP 1.1 ему на замену пришёл Cache-Control Протокол HTTP/1.0 предполагал расширение директив для заголовка Pragma, как совокупность всех директив для прокси-серверов. Но в HTTP/1.1 отказались от этого и ввели отдельный заголовок Cache-Control для управления кешированием, в котором содержатся в том числе и директивы для прокси-северов. Спасибо, почитаю. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251724,251732#msg-251732 From nginx-forum at nginx.us Sun Jul 13 20:58:09 2014 From: nginx-forum at nginx.us (S.A.N) Date: Sun, 13 Jul 2014 16:58:09 -0400 Subject: =?UTF-8?B?UmU6INCa0LDQuiDQvtC/0YDQtdC00LXQu9C40YLRjCwg0YHQutC+0LvRjNC60L4g?= =?UTF-8?B?0YPQttC1INGF0YDQsNC90LjRgtGB0Y8g0LrRjdGIPw==?= In-Reply-To: References: <6f6054cdd7da2618d82e5655055fa225.NginxMailingListRussian@forum.nginx.org> <9d04459fb570720831d324953b53ed94.NginxMailingListRussian@forum.nginx.org> <75eabbc34d0ea4556782f09830cb5e0b.NginxMailingListRussian@forum.nginx.org> <82e88b0e71321dd32c5bbbf234e13a25.NginxMailingListRussian@forum.nginx.org> Message-ID: Budulianin Wrote: ------------------------------------------------------- > >Pragma - это костыльный заголовок который вообще не стоит > использовать для кеширования > Он для HTTP 1.0 Костыльность Pragma, заключается в том что это заголовок запроса а не ответа, потом его начали использовать как заголовок ответа, потому что другого варианта не было, это был временный костыль, сейчас его использовать равно использованию говна мамонта, в общем забудьте про него ) Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251724,251733#msg-251733 From nginx-forum at nginx.us Mon Jul 14 01:33:21 2014 From: nginx-forum at nginx.us (PbIXTOP) Date: Sun, 13 Jul 2014 21:33:21 -0400 Subject: nginx + proxy In-Reply-To: <32d019e644d5ddd4771d1f10741c1def.NginxMailingListRussian@forum.nginx.org> References: <32d019e644d5ddd4771d1f10741c1def.NginxMailingListRussian@forum.nginx.org> Message-ID: <54abfc6246403d6aac3dbdfce310d553.NginxMailingListRussian@forum.nginx.org> У меня так и работает. Использую правда для сохранения статики с некоторых CDN сайтов. Для этого в локальной сети на DNS-сервере для пользователей прописаны необходимые домены, которые необходимо обслужить nginx-ом. При этом сам сервер с proxy-nginx'ом имеет правильные записи для DNS(у меня он просто берет с наружи). Чтоб пользователи не могли воспользоваться другими DNS, на маршрутезаторе все заворачиваються на корпоративный. При желании можно и просто заворачивать трафик на nginx - приходиться использовать для сайтов где исаользуется http-https (http - на nginx, https - напрямую). Используються в основном 2 конструкции. server { server_name www.example.com; default_type application/octet-stream; location / { open_file_cache max=1000; expires 10d; root /var/cache/nginx; try_files $uri @proxy_it; } location @proxy_it { open_file_cache max=1000; expires 3M; root /var/cache/nginx; proxy_store on; proxy_set_header Host $host; proxy_pass http://127.0.0.1:3128; } } Во втором варианте nginx сам идет на основной сайт. location @proxy_it { open_file_cache max=1000; expires 3M; root /var/cache/nginx; proxy_store on; proxy_set_header Host $host; proxy_pass http://$host; } Данные конструкции работают почти без сбоев. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251628,251739#msg-251739 From mva at mva.name Mon Jul 14 03:06:41 2014 From: mva at mva.name (Vadim A. Misbakh-Soloviov) Date: Mon, 14 Jul 2014 10:06:41 +0700 Subject: nginx + proxy In-Reply-To: <54abfc6246403d6aac3dbdfce310d553.NginxMailingListRussian@forum.nginx.org> References: <32d019e644d5ddd4771d1f10741c1def.NginxMailingListRussian@forum.nginx.org> <54abfc6246403d6aac3dbdfce310d553.NginxMailingListRussian@forum.nginx.org> Message-ID: <2145621.I2nHzW2Vrp@note> > proxy_set_header Host $host; > proxy_pass http://127.0.0.1:3128; На сколько я помню, это таки подразумевает умение "прозачности" (и бытие http, а не socks) на прокси. В любом случае, да, можно попробовать... -- Best regsrds, mva -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: This is a digitally signed message part. URL: From mail at knutov.com Mon Jul 14 05:41:23 2014 From: mail at knutov.com (Nick Knutov) Date: Mon, 14 Jul 2014 11:41:23 +0600 Subject: =?UTF-8?B?b3BlcmEgKyBodG1sINGC0LXQsyBhdWRpbw==?= Message-ID: <53C36D83.5070005@knutov.com> Есть html страница с кодом Файл по ссылке отдается nginx, который проксирует запрос на апач. Оказалось, что файл нормально играется, например, любой последней версией хрома, однако в опере (и 12.* и на движке хрома) при нажатии на иконку проигрывания кнопка становится неактивной. В гугле находится, например, это - http://stackoverflow.com/questions/1995589/html5-audio-safari-live-broadcast-vs-not , но не ясно, какие и как заголовки в nginx и/или апаче мне добавлять, если это статический файл. Кто-нибудь с таким сталкивался? -- Best Regards, Nick Knutov http://knutov.com ICQ: 272873706 Voice: +7-904-84-23-130 From nginx-forum at nginx.us Mon Jul 14 07:01:25 2014 From: nginx-forum at nginx.us (Hett) Date: Mon, 14 Jul 2014 03:01:25 -0400 Subject: =?UTF-8?B?bGltaXQgem9uZSDQuCDRgdC+0YHRgtCw0LLQvdC+0Lkg0LrQu9GO0Yc=?= Message-ID: Привет всем, необходимо для каждого хоста делать свои зоны ограничений, дабы не плодить кучу зон, пытался сделать все в одной, но ничего не получилось... возможно ли сделать что-то подобное? limit_conn_zone "${binary_remote_addr}-${host}" zone=addr:10m; Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251743,251743#msg-251743 From vbart at nginx.com Mon Jul 14 07:16:19 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Mon, 14 Jul 2014 11:16:19 +0400 Subject: =?UTF-8?B?UmU6IGxpbWl0IHpvbmUg0Lgg0YHQvtGB0YLQsNCy0L3QvtC5INC60LvRjtGH?= In-Reply-To: References: Message-ID: <1727401.F0QLICkAMd@vbart-workstation> On Monday 14 July 2014 03:01:25 Hett wrote: > т всем, > необходимо для каждого хоста делать свои зоны ограничений, дабы не плодить > кучу зон, пытался сделать все в одной, но ничего не получилось... > > возможно ли сделать что-то подобное? > > limit_conn_zone "${binary_remote_addr}-${host}" zone=addr:10m; > set $limit_key $binary_remote_addr$host; http://nginx.org/r/set/ru -- Валентин Бартенев From nginx-forum at nginx.us Mon Jul 14 09:20:21 2014 From: nginx-forum at nginx.us (Hett) Date: Mon, 14 Jul 2014 05:20:21 -0400 Subject: =?UTF-8?B?UmU6IGxpbWl0IHpvbmUg0Lgg0YHQvtGB0YLQsNCy0L3QvtC5INC60LvRjtGH?= In-Reply-To: References: Message-ID: Все, придумал: http { limit_req_zone $zone_limit_key zone=one:50m rate=2r/s; limit_conn_zone $zone_limit_key zone=addr:50m; server { set $zone_limit_key "${binary_remote_addr}-${host}"; limit_req zone=one burst=5 nodelay; limit_conn addr 8; } } Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251743,251745#msg-251745 From nginx-forum at nginx.us Mon Jul 14 09:38:41 2014 From: nginx-forum at nginx.us (Hett) Date: Mon, 14 Jul 2014 05:38:41 -0400 Subject: =?UTF-8?B?UmU6IGxpbWl0IHpvbmUg0Lgg0YHQvtGB0YLQsNCy0L3QvtC5INC60LvRjtGH?= In-Reply-To: <1727401.F0QLICkAMd@vbart-workstation> References: <1727401.F0QLICkAMd@vbart-workstation> Message-ID: <990d700757ee6bd40ba231cb735e3f49.NginxMailingListRussian@forum.nginx.org> да, уже разобрался, спасибо Просто раньше не знал, откуда и куда переменные передаются. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251743,251747#msg-251747 From nginx-forum at nginx.us Tue Jul 15 03:37:21 2014 From: nginx-forum at nginx.us (S.A.N) Date: Mon, 14 Jul 2014 23:37:21 -0400 Subject: Cache revalidation using If-None-Match In-Reply-To: <079e52f9f8fa022f68cbaaeab09fb56b.NginxMailingListRussian@forum.nginx.org> References: <079e52f9f8fa022f68cbaaeab09fb56b.NginxMailingListRussian@forum.nginx.org> Message-ID: Nginx 1.7.3, отличная версия, в ней полностью решен вопрос с ETag. Но есть мелочи которых очень не хватает, их всего две ) 1. Нельзя получить от клиента валидаторы (?If-Modified-Since? и ?If-None-Match?) если файла кеша нет, эта ситуация возникает когда бекенд отдавал заголовки Cache-Control: private, для контента который должен кешироватся только в браузере (не публичный кеш). Проблема решается если в конфиге прописать fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match if_not_empty; fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since if_not_empty; Но тогда будет проблема с публичным кешем, потому что бекенд может получить валидаторы от браузера, ответить статусом 304, Cache-Control: public... и Nginx положит этот ответ (статусом 304 nobody) в файл своего кеша и будет его отдавать всем. Я уже писал, про эту проблему http://forum.nginx.org/read.php?21,245951,245951#msg-245951 Хочется её как-то решить. 2. Нельзя переопределить через HTTP заголовки значения директивы fastcgi_cache_use_stale и установить для кеширования max-age=0 Для чего это нужно, в конфиге прописывается директива fastcgi_cache_use_stale error, это значения нужно для 80% uri. Но есть динамические страницы, которые нужно кешировать, но обязательно проводить ревалидацию на каждый запрос. Пример из жизни где мы это юзаем. Есть страница отчетов с графиками различной статистики, которая может меняться раз в сутки или каждую секунду, заранее это не известно. Доступ к этим отчетам имеют только залогиненые пользователи из определенных групп. Кол-во этих юзеров довольно высоко и количество запросов к этим отчетам так же высоко, по этому есть смысл их кешировать, но отдавать только после проведения проверка на вхождения юзара в нужную групу и на актуальность валидаторов (ETag). Есть способ как создать кеш с max-age=0, через X-Accel-Expires: $time-1. Но нет способа как динамически, сказать Nginx не использовать cache_use_stale для этого uri, прописать в конфиге все варианты этих uri сложно они динамические и не шаблонные, добавлять какой-то спец признак по которому можно создать общий location в принципе можно, но хочется более красивого и системного решения. На мой взгляд таким решением может стать Cache-Control: must-revalidate, если бекенд отдает этот заголовок, он сохраняется в кеш, но при повторном использовании кеша, Nginx всегда выполняет ревалидацию (must-revalidate), если бекенд не работает отдать клиенту статус ошибки. Это конечно будет иметь определенный оверхед, но такой кеш намного эффективней, чем каждый раз повторно генерировать отчет и все графики. Если вы считаете возможным это реализовать, думаю этим будут пользоваться многие клиенты. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251189,251761#msg-251761 From nginx-forum at nginx.us Tue Jul 15 05:50:54 2014 From: nginx-forum at nginx.us (MatthewP) Date: Tue, 15 Jul 2014 01:50:54 -0400 Subject: =?UTF-8?B?0JrQsNC6INC80L7QttC90L4g0LfQsNGB0YLQsNCy0LjRgtGMINC+0YLQutGA0Ys=?= =?UTF-8?B?0LLQsNGC0YzRgdGPIHRlc3QuZXhhbXBsZS5jb20sINC60LDQuiDQsdGD0LQ=?= =?UTF-8?B?0YLQviDRjdGC0L4gZXhhbXBsZS5jb20vP3Zhcj0x?= Message-ID: Собственно хочется что бы сайт test.example.com работал точно так же как и example.com, но в случае с test.example.com невидимо добавлялась GET переменная? Пример: Вводим example.com, открывается главная сайта. Вводим test.example.com, открывается главная сайта, но существует GET переменная "var=1" Вводим example.com/contacts, открываются контакты сайта. Вводим test.example.com/contacts, открываются контакты сайта, но существует GET переменная "var=1" Буду очень признателен за помощь! Стоит nginx+apache2 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251762,251762#msg-251762 From nginx-forum at nginx.us Tue Jul 15 08:18:11 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 04:18:11 -0400 Subject: =?UTF-8?B?0J3QtdGCIHV3c2dpIHNldCBoZWFkZXIsINGH0LXQvCDQt9Cw0LzQtdC90LjRgtGM?= =?UTF-8?B?Pw==?= Message-ID: <7f1761a3b78d15b4df4327dc63988985.NginxMailingListRussian@forum.nginx.org> Всем привет. Хочу задать заголовки. Но в доке не вижу uwsgi_set_header. Как для uwsgi задать заголовки? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251763#msg-251763 From igor at sysoev.ru Tue Jul 15 08:22:31 2014 From: igor at sysoev.ru (Igor Sysoev) Date: Tue, 15 Jul 2014 12:22:31 +0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <7f1761a3b78d15b4df4327dc63988985.NginxMailingListRussian@forum.nginx.org> References: <7f1761a3b78d15b4df4327dc63988985.NginxMailingListRussian@forum.nginx.org> Message-ID: On 15 Jul 2014, at 12:18, Budulianin wrote: > Всем привет. > > Хочу задать заголовки. Но в доке не вижу uwsgi_set_header. > Как для uwsgi задать заголовки? http://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_param -- Igor Sysoev http://nginx.com From nginx-forum at nginx.us Tue Jul 15 08:23:53 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 04:23:53 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <7f1761a3b78d15b4df4327dc63988985.NginxMailingListRussian@forum.nginx.org> References: <7f1761a3b78d15b4df4327dc63988985.NginxMailingListRussian@forum.nginx.org> Message-ID: <78985defa451ad23ac273f6f7185463e.NginxMailingListRussian@forum.nginx.org> http://stackoverflow.com/questions/14133460/how-to-read-uwsgi-parameters-in-python-flask-passed-from-nginx Вот здесь говорят, что можно создать переменную, как uwsgi параметр и пользоваться ей. А другого способа нет? Странно, что нет uwsgi_set_header. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251764#msg-251764 From vbart at nginx.com Tue Jul 15 08:29:00 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Tue, 15 Jul 2014 12:29 +0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <78985defa451ad23ac273f6f7185463e.NginxMailingListRussian@forum.nginx.org> References: <7f1761a3b78d15b4df4327dc63988985.NginxMailingListRussian@forum.nginx.org> <78985defa451ad23ac273f6f7185463e.NginxMailingListRussian@forum.nginx.org> Message-ID: <1454955.NyyLpAJgPK@vbart-workstation> On Tuesday 15 July 2014 04:23:53 Budulianin wrote: > http://stackoverflow.com/questions/14133460/how-to-read-uwsgi-parameters-in-python-flask-passed-from-nginx > Вот здесь говорят, что можно создать переменную, как uwsgi параметр и > пользоваться ей. > > А другого способа нет? Странно, что нет uwsgi_set_header. > Потому, что в самом протоколе нет такого понятия как "заголовок", а есть возможность только передавать параметры, и все http заголовки передаются как параметры с префиксом HTTP_. Если вы хотите эмулировать такой заголовок, то просто нужно указать: uwsgi_param HTTP_Header value; -- Валентин Бартенев From nginx-forum at nginx.us Tue Jul 15 08:41:45 2014 From: nginx-forum at nginx.us (luckysrg) Date: Tue, 15 Jul 2014 04:41:45 -0400 Subject: =?UTF-8?B?0J/QvtC80L7Qs9C40YLQtSDRgSDRgNC10LTQuNGA0LXQutGC0L7QvA==?= Message-ID: Всем привет, очень нужна помощь, сайт был полностью на https, в связи с этим были характерные проблемы с поисковикми, не индексиравались картинки, нет favicon. Собственно, нужно теперь поставить 301 редирект на все страницы с https, но оставить редирект на https в личный кабинет и на страницу оплаты, с первой частью вопросов нет, но, вот, чтобы обе части выполняли условия не получается, прошу помощи. вот пациент server { server_name example.ru www.example.ru; listen 144.*.*.*; listen 144.*.*.*:443 ssl; disable_symlinks if_not_owner from=$root_path; set $root_path /var/www/example/data/www/example.ru; #rewrite ^(.*) https://$host$1 permanent; if ( $scheme = "http" ) { rewrite ^/(.*)$ https://$host/$1 permanent; } location ~* ^.+.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|woff)$ { root $root_path; expires 31d; access_log /var/www/nginx-logs/example isp; access_log /var/www/httpd-logs/example.ru.access.log ; error_page 404 = @fallback; } location / { proxy_pass http://144.*.*.*:81; proxy_redirect http://144.*.*.*:81/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } location ~* ^/(webstat|awstats|webmail|myadmin|pgadmin)/ { proxy_pass http://144.*.*.*:81; proxy_redirect http://144.*.*.*:81/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } location @fallback { proxy_pass http://144.*.*.*:81; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } location ^~ /webstat/ { auth_basic "Restricted area"; auth_basic_user_file /var/www/example/data/etc/665870.passwd; try_files $uri @fallback; } include /usr/local/ispmgr/etc/nginx.inc; ssl_certificate /var/www/httpd-cert/example/ssl-example.crt; ssl_certificate_key /var/www/httpd-cert/example/ssl-example.key; #ssl_protocols SSLv3 TLSv1; #Disables all weak ciphers #ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM; ssl_ciphers RC4:HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; } Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251769,251769#msg-251769 From nginx-forum at nginx.us Tue Jul 15 08:45:44 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 04:45:44 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <1454955.NyyLpAJgPK@vbart-workstation> References: <1454955.NyyLpAJgPK@vbart-workstation> Message-ID: <1f9c719f9b341bc86133b3309082b99e.NginxMailingListRussian@forum.nginx.org> >Валентин Бартенев, Igor Sysoev Спасибо за ответы. А как правильно передать несоклько переменных в uwsgi ? До этого у меня передавалась стандартная переменная PATH_INFO, а теперь uwsgi говорит, что её нет. http { uwsgi_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=static_cache:10m inactive=10m max_size=500M; uwsgi_cache_use_stale error; include uwsgi_params; server { listen 6543; location / { uwsgi_pass unix:/tmp/test_cache_nginx.sock; uwsgi_cache static_cache; uwsgi_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie; uwsgi_hide_header Set-Cookie; uwsgi_param HTTP_CACHE_CONTROL "max-age=600 no-cache"; uwsgi_cache_key "$request_method$host$uri$is_args$args"; uwsgi_cache_lock on; } } } KeyError: 'PATH_INFO' Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251770#msg-251770 From nginx-forum at nginx.us Tue Jul 15 08:57:50 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 04:57:50 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <1f9c719f9b341bc86133b3309082b99e.NginxMailingListRussian@forum.nginx.org> References: <1454955.NyyLpAJgPK@vbart-workstation> <1f9c719f9b341bc86133b3309082b99e.NginxMailingListRussian@forum.nginx.org> Message-ID: <715e78f9c2ccd1a7cc1e0ebeca2f71f4.NginxMailingListRussian@forum.nginx.org> Разобрался. Нужно в каждой директиве прописывать заново include uwsgi_params; Если передаёшь свои параметры в ней. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251771#msg-251771 From nginx-forum at nginx.us Tue Jul 15 09:10:10 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 05:10:10 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <7f1761a3b78d15b4df4327dc63988985.NginxMailingListRussian@forum.nginx.org> References: <7f1761a3b78d15b4df4327dc63988985.NginxMailingListRussian@forum.nginx.org> Message-ID: <59da5959f63f9c82dea651f7714a37e1.NginxMailingListRussian@forum.nginx.org> proxy_set_header задаёт заголовки. uwsgi_param задаёт параметры. И всё это передаётся на проксируемый сервер. есть ещё uwsgi_pass_header он разрешает передавать запрещённые заголовки от uwsgi. Но я не вижу с помощью чего, можно добавить заголовки в ответ uwsgi. Это возможно? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251772#msg-251772 From vbart at nginx.com Tue Jul 15 09:12:33 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Tue, 15 Jul 2014 13:12:33 +0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <59da5959f63f9c82dea651f7714a37e1.NginxMailingListRussian@forum.nginx.org> References: <7f1761a3b78d15b4df4327dc63988985.NginxMailingListRussian@forum.nginx.org> <59da5959f63f9c82dea651f7714a37e1.NginxMailingListRussian@forum.nginx.org> Message-ID: <6221735.7p0lz4VUPH@vbart-workstation> On Tuesday 15 July 2014 05:10:10 Budulianin wrote: > proxy_set_header задаёт заголовки. > uwsgi_param задаёт параметры. И всё это передаётся на проксируемый сервер. > > есть ещё uwsgi_pass_header он разрешает передавать запрещённые заголовки от > uwsgi. > > Но я не вижу с помощью чего, можно добавить заголовки в ответ uwsgi. > Это возможно? > [..] Какой смысл добавлять заголовок в ответ uwsgi? Вероятно вы всё же хотите добавить заголовок в ответ nginx, тогда это делается с помощью add_header. http://nginx.org/r/add_header/ru -- Валентин Бартенев From nginx-forum at nginx.us Tue Jul 15 09:21:41 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 05:21:41 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <6221735.7p0lz4VUPH@vbart-workstation> References: <6221735.7p0lz4VUPH@vbart-workstation> Message-ID: >Какой смысл добавлять заголовок в ответ uwsgi? Вероятно вы всё же хотите добавить заголовок в ответ nginx, тогда это делается с помощью add_header. Возможно я неправильно выразился. Я хочу принять ответ от uwsgi, добавить в него пару заголовков и отдать клиенту. Фактически добавить заголовки в ответ nginx. Я таким образом хочу управлять кэшем. Спасибо, сейчас попробую. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251776#msg-251776 From nginx-forum at nginx.us Tue Jul 15 10:58:19 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 06:58:19 -0400 Subject: =?UTF-8?B?0JLQvtC/0YDQvtGBINC+0LEg0YPQv9GA0LDQstC70LXQvdC40Lgg0LrRjdGI0LU=?= =?UTF-8?B?0Lwgbmdpbngu?= Message-ID: <63dd05662d7547e5e709c31c810dad76.NginxMailingListRussian@forum.nginx.org> Всем привет. Правильно ли я понимаю, что nginx может создать кэш, только на основании полученного ответа от проксируемого сервера? Т.е. прописаны все настройки для кэша(uwsgi_cache_path и прочее) Но nginx создаст кэш только, если будет соответствующий заголовок(Cache-Control, Expires) от проксируемого сервера. А создать кэш самостоятельно(без заголовков от прокс. сервера) он не может? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251781,251781#msg-251781 From nginx-forum at nginx.us Tue Jul 15 11:08:06 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 07:08:06 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> Message-ID: <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> >Я хочу принять ответ от uwsgi, > добавить в него пару заголовков и отдать клиенту. > Фактически добавить заголовки в ответ nginx. > Я таким образом хочу управлять кэшем. Вы таким образом сможете управлять только кешем браузера, если хотите управлять кешем Nginx, нужно чтобы ваше приложения отдавала правильные значения в заголовках Expires или Cache-Control, если приложения не может отдавать правильные заголовки тогда вам нужно управлять кешированием через директивы в конфиге Nginx http://nginx.org/ru/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_valid вам наверно нужно так - uwsgi_cache_valid 200 10m; P.S. Зачем вы выбрали такое значения Cache-Control: max-age=600 no-cache? во первых, нужна запятая между max-age=600 и no-cache во вторых, max-age=600 и no-cache взаимоисключают дру-друга, max-age=600 говорит кешить на 10 минут, а no-cache говорит нельзя использовать кеш без ревалидации, т.е браузер это понимает как - max-age=0 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251782#msg-251782 From nginx-forum at nginx.us Tue Jul 15 11:13:24 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 07:13:24 -0400 Subject: =?UTF-8?B?UmU6INCS0L7Qv9GA0L7RgSDQvtCxINGD0L/RgNCw0LLQu9C10L3QuNC4INC60Y0=?= =?UTF-8?B?0YjQtdC8IG5naW54Lg==?= In-Reply-To: <63dd05662d7547e5e709c31c810dad76.NginxMailingListRussian@forum.nginx.org> References: <63dd05662d7547e5e709c31c810dad76.NginxMailingListRussian@forum.nginx.org> Message-ID: <2b8bb41f77c5ba9ce590d5d43cf1fbcc.NginxMailingListRussian@forum.nginx.org> Если так uwsgi_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie; uwsgi_hide_header Set-Cookie; uwsgi_cache_valid 200 10m; Тогда не важно какие заголовки отправил проксируемый сервер (бекенд), ответ будет закеширован на 10 минут, этим занимается директива http://nginx.org/ru/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_valid Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251781,251783#msg-251783 From nginx-forum at nginx.us Tue Jul 15 11:20:20 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 07:20:20 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> Message-ID: <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> >если приложения не может отдавать правильные заголовки тогда вам нужно управлять кешированием через директивы в конфиге Nginx http://nginx.org/ru/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_valid вам наверно нужно так - uwsgi_cache_valid 200 10m; Видимо этими заголовками можно создать кэш nginx самостоятельно, без заголовков от проксируемого сервера. >Зачем вы выбрали такое значения Cache-Control: max-age=600 no-cache? 600 секунд хранить кэш, а no-cache, я так понял, заставляет отсылать заголовки на сервер, чтобы проверить свежесть. >во первых, нужна запятая между max-age=600 и no-cache Да, виноват. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251784#msg-251784 From nginx-forum at nginx.us Tue Jul 15 11:22:51 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 07:22:51 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> Message-ID: >Видимо этими заголовками можно создать кэш nginx самостоятельно, те директивами Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251785#msg-251785 From nginx-forum at nginx.us Tue Jul 15 11:30:08 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 07:30:08 -0400 Subject: =?UTF-8?B?UmU6INCS0L7Qv9GA0L7RgSDQvtCxINGD0L/RgNCw0LLQu9C10L3QuNC4INC60Y0=?= =?UTF-8?B?0YjQtdC8IG5naW54Lg==?= In-Reply-To: <2b8bb41f77c5ba9ce590d5d43cf1fbcc.NginxMailingListRussian@forum.nginx.org> References: <63dd05662d7547e5e709c31c810dad76.NginxMailingListRussian@forum.nginx.org> <2b8bb41f77c5ba9ce590d5d43cf1fbcc.NginxMailingListRussian@forum.nginx.org> Message-ID: <9c117605e9e6af0732137d8b78d4d66e.NginxMailingListRussian@forum.nginx.org> А как, вообще, правильнее создавать кэш nginx ? Преимущественно на основе заголовков от приложения? Или подменивать заголовки на nginx ? Или всё зависит от задачи, но лучше стараться управлять из приложения? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251781,251786#msg-251786 From nginx-forum at nginx.us Tue Jul 15 11:31:18 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 07:31:18 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> Message-ID: <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> Да, директивы uwsgi_cache_valid для этого и придумали, чтобы управлять кешированием, если бекенд приложения не может самостоятельно отправить правильные заголовки. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251788#msg-251788 From nginx-forum at nginx.us Tue Jul 15 11:45:31 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 07:45:31 -0400 Subject: =?UTF-8?B?UmU6INCS0L7Qv9GA0L7RgSDQvtCxINGD0L/RgNCw0LLQu9C10L3QuNC4INC60Y0=?= =?UTF-8?B?0YjQtdC8IG5naW54Lg==?= In-Reply-To: <9c117605e9e6af0732137d8b78d4d66e.NginxMailingListRussian@forum.nginx.org> References: <63dd05662d7547e5e709c31c810dad76.NginxMailingListRussian@forum.nginx.org> <2b8bb41f77c5ba9ce590d5d43cf1fbcc.NginxMailingListRussian@forum.nginx.org> <9c117605e9e6af0732137d8b78d4d66e.NginxMailingListRussian@forum.nginx.org> Message-ID: <596a8e79827bdf9ec340500cbc217118.NginxMailingListRussian@forum.nginx.org> Лучше управлять кешированием из приложения, это более правильное решения и более гибкое, таким образом приложения самостоятельно решает какой контент на какой период кешировать и эти же заголовки отправятся в браузер и тогда не надо будут костыли в виде ignore_headers и hide_header, потому что приложения отдает коректные заголовки для кеширования, самое главное что браузеры так же будут кешировать ваш ответ в своем кеше и если контент на сервере не поменялся, браузер будет использовать свой локал кеш, это очень хорошо для уменьшения трафика и увеличения скорости отдачи контента, самая высокая скорость это отдача контента из локал кеша браузера. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251781,251790#msg-251790 From nginx-forum at nginx.us Tue Jul 15 11:53:03 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 07:53:03 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> Message-ID: >Зачем вы выбрали такое значения Cache-Control: max-age=600 no-cache? Этой строчкой я хотел сказать браузеру: держи у себя кэш 600 секунд, но при каждом запросе отправляй заголовки(видимо If-modified-since) Потому что кэш nginx может обновиться раньше, чем пройдёт 600 секунд и тогда браузер возьмёт свежий ответ. Неверно ? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251794#msg-251794 From nginx-forum at nginx.us Tue Jul 15 12:08:31 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 08:08:31 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> Message-ID: <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> Budulianin Wrote: ------------------------------------------------------- > >Зачем вы выбрали такое значения Cache-Control: max-age=600 no-cache? > > Этой строчкой я хотел сказать браузеру: держи у себя кэш 600 секунд, > но при каждом запросе отправляй заголовки(видимо If-modified-since) > Потому что кэш nginx может обновиться раньше, чем пройдёт 600 секунд и > тогда браузер возьмёт свежий ответ. > > Неверно ? Нет не верно, параметр max-age указывает через какой временной интервал времени нужно проводить ревалидацию, no-cache тоже указывает этот интервал, он всегда равен нулю т.е по сути no-cache это синоним max-age=0. Браузеру ненужно говорить сколько времени хранить кеш, он его будет хранить столько сколько сможет по своим внутренним алгоритмам, кол-во свободного места на диске, частота обращения к сайту и т.д... Браузеру просто нужно сказать, когда проводить ревалидацию кеша, вот и все. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251795#msg-251795 From nginx-forum at nginx.us Tue Jul 15 12:18:46 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 08:18:46 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> Message-ID: >S.A.N Значит, если в ответе у сервера было Cache-Control max-age=600, в течение 600 секунд, каждый запрос браузера, будет отсылать валидатор(If-modifiet-since или If-non-match) и если валидатор в кэше(nginx) такой же, то будут возвращены только заголовки(304), а спустя 600 секунд, будет просто запрос без валидаторов и тогда уже в любом случае ответ будет с телом(200 ок) вне зависимости, новый там кэш или старый? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251796#msg-251796 From mdounin at mdounin.ru Tue Jul 15 12:22:16 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 15 Jul 2014 16:22:16 +0400 Subject: =?UTF-8?B?UmU6INCf0L7QvNC+0LPQuNGC0LUg0YEg0YDQtdC00LjRgNC10LrRgtC+0Lw=?= In-Reply-To: References: Message-ID: <20140715122216.GZ1849@mdounin.ru> Hello! On Tue, Jul 15, 2014 at 04:41:45AM -0400, luckysrg wrote: > Всем привет, очень нужна помощь, сайт был полностью на https, в связи с этим > были характерные проблемы с поисковикми, не индексиравались картинки, нет > favicon. Собственно, нужно теперь поставить 301 редирект на все страницы с > https, но оставить редирект на https в личный кабинет и на страницу оплаты, > с первой частью вопросов нет, но, вот, чтобы обе части выполняли условия не > получается, прошу помощи. > > > вот пациент > > server { > server_name example.ru www.example.ru; > listen 144.*.*.*; > listen 144.*.*.*:443 ssl; > disable_symlinks if_not_owner from=$root_path; > set $root_path /var/www/example/data/www/example.ru; > #rewrite ^(.*) https://$host$1 permanent; > if ( $scheme = "http" ) { > rewrite ^/(.*)$ https://$host/$1 permanent; > } Начать имеет смысл с простого: разделить http и https, описав их в разных блоках server{}. И соответственно перенаправления делать - в зависимости от выбранного server'а / location'а, а не играть в игры с проверкой переменных в рамках "единого" сервера: server { listen 443 ssl; server_name example.com; ... } server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; } После этого большая часть проблем должна отпасть. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Tue Jul 15 12:51:44 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 08:51:44 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> Message-ID: <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> Нет, на протяжении 600 секунд, браузер НЕ БУДЕТ делать запрос к серверу вообще, потому что вы ему сказали, что кеш можно использовать без ревалидации на протяжении 600 секунд. После истечения 600 секунд, браузер сделает запрос к серверу, передаст ему If-Modified-Since, Nginx сравнит значения If-Modified-Since с значением Last-Modified которое хранится в кеше, если они равны Nginx ответит статусом 304 и передавать ничего не будет, браузер при получения статуса 304 понимает что контент не изменился и продолжает использовать свой кеш на протяжении следующих 600 секунд, и так по кругу, если If-Modified-Since и Last-Modified из кеша не равны, Nginx ответит 200 статусом и отдаст новый контент. Если вы можете, в адреса статики добавлять номер версии, тогда можно реализовать самую простую и надежную схему, отдавать кеш с max-age=315360000, но при изменении файлв статики, менять её адрес (в адресе ставится номер версии статики) в самой странице HTML, таким образом вы получите максимальное кеширования и мгновенное обновления кеша. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251800#msg-251800 From nginx-forum at nginx.us Tue Jul 15 13:09:26 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 09:09:26 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> Message-ID: Большое спасибо за ответ, теперь понял. А если браузер присылает в запросе Cache-Control: no-cache(или max-age=0), что часто бывает, а я хочу отдавать кэш, мне как-то игнорировать этот заголовок или если из приложения будет ответ с Cache-Control: max-age=600, то в браузере в любом случае сохранится кэш? Получается, что Cache-Control: max-age=315360000 опасно отдавать, если не уверен на 100% что ничего не будет меняться. Как потом отменить этот кэш? Если не менять URI. Добавлять версию скорее всего не получится, значит нужно задавать небольшой max-age даже для статики? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251801#msg-251801 From nginx-forum at nginx.us Tue Jul 15 13:22:01 2014 From: nginx-forum at nginx.us (luckysrg) Date: Tue, 15 Jul 2014 09:22:01 -0400 Subject: =?UTF-8?B?UmU6INCf0L7QvNC+0LPQuNGC0LUg0YEg0YDQtdC00LjRgNC10LrRgtC+0Lw=?= In-Reply-To: <20140715122216.GZ1849@mdounin.ru> References: <20140715122216.GZ1849@mdounin.ru> Message-ID: <3bc634ae918bebe8071066ee67358ff5.NginxMailingListRussian@forum.nginx.org> Спасибо за совет, но все равно остался вопрос как из секции 80 сделать редирект на страницы корзины и личного кабинета, а из секции 443 все редиректить на http, кроме страниц корзины и личного кабинета. Спасибо. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251769,251803#msg-251803 From nginx-forum at nginx.us Tue Jul 15 13:34:34 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 09:34:34 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> Message-ID: <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> Budulianin Wrote: ------------------------------------------------------- > Большое спасибо за ответ, теперь понял. > > А если браузер присылает в запросе Cache-Control: no-cache(или > max-age=0), что часто бывает, а я хочу отдавать кэш, мне как-то > игнорировать этот заголовок или если из приложения будет ответ с > Cache-Control: max-age=600, то в браузере в любом случае сохранится > кэш? Браузер в запросе будет присылать Cache-Control: no-cache, только если вы нажали F5 (обновления страницы), браузер говорит что юзер хочет получить новый контент, но при этом браузер высылает и If-Modified-Since, что означает что имеете право не отдавать контент если его версия не изменилась а просто отдать 304 статус и браузер будет использовать контент из своего кеша. Проще говоря вы можете игнорировать Cache-Control: no-cache из запроса, если приходит If-Modified-Since, нл можете и не игнорировать, все зависит от задачи и бизнес логики приложения. > Получается, что Cache-Control: max-age=315360000 опасно отдавать, если > не уверен на 100% что ничего не будет меняться. Как потом отменить > этот кэш? Если не менять URI. > > Добавлять версию скорее всего не получится, значит нужно задавать > небольшой max-age даже для статики? Да, если вы не можете менять uri контента, тогда придется указывать небольшой max-age и проводить ревалидацию. В этом случаи приложения должно уметь очень быстро проверять If-Modified-Since с текущим Last-Modified, если они равны отдавать 304, если нет отдавать новый контент и статус 200. Если приложения будет тормозить при ревалидации, тогда смысла от кеширования мало, потому что юзера будут получать задержку, приложения занимать ресурсы сервера. В общем надо делать молниеносную ревалидацию в приложении ) Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251804#msg-251804 From nginx-forum at nginx.us Tue Jul 15 13:59:40 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 09:59:40 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> Message-ID: <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> >В этом случаи приложения должно уметь очень быстро проверять If-Modified-Since с текущим Last-Modified, если они равны отдавать 304, если нет отдавать новый контент и статус 200. Под это нужно специально готовить приложение. Обычно приходит GET и отдаётся 200. А если сделать так: отдавать в кэш браузера, на очень короткий срок динамические страницы(3-5 мин), статику(JS, CSS, img) на пару часов. А кэш самого nginx хранить дольше: динамические страницы(20-30 минут) статику несколько суток. Тогда если вдруг понадобится быстро поменять что-то, то мы всегда сможем почистить кэш nginx. Таким образом, и браузерный кэш нам помогает, и nginx на себя принимает основную нагрузку, и мы в любой момент, в очень короткий срок, можем сделать весь контент у всех пользователей, опять актуальным. Как идея? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251805#msg-251805 From nginx-forum at nginx.us Tue Jul 15 14:29:08 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 10:29:08 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> Message-ID: Budulianin Wrote: ------------------------------------------------------- > >В этом случаи приложения должно уметь очень быстро проверять > If-Modified-Since с текущим Last-Modified, если они равны отдавать > 304, если нет отдавать новый контент и статус 200. > > Под это нужно специально готовить приложение. Обычно приходит GET и > отдаётся 200. Лично я разработчик а не администратор, и я бы больше был мотивирован в доработке приложения, вместо решения этой задачи на уровне админисрирования веб-сервера. P.S. Чем быстрей вы займетесь разработкой приложения, тем быстрей вы из Junior вырастите в Senior разработчика, там и зарплаты другие и задачи интересней ) > А если сделать так: отдавать в кэш браузера, на очень короткий срок > динамические страницы(3-5 мин), > статику(JS, CSS, img) на пару часов. А кэш самого nginx хранить > дольше: динамические страницы(20-30 минут) > статику несколько суток. Тогда если вдруг понадобится быстро поменять > что-то, то мы всегда сможем почистить кэш nginx. > > Таким образом, и браузерный кэш нам помогает, и nginx на себя > принимает основную нагрузку, и мы в любой момент, в очень короткий > срок, можем сделать весь контент у всех пользователей, опять > актуальным. > > Как идея? Вы знаете как определяется скорость каравана? Она равна скорости самого медленного звена каравана. В вашей схеме кеш контента будет валидным столько сколько вы указали Nginx и не важно что браузеры будут делать запрос чаще, Nginx будет отдавать им контент из кеша и не обращаться к вашему приложению, логика кеширования в Nginx такая же как в браузерах, я уже вам объяснял что значит max-age, для Nginx он означает тоже самое - это кол-во секунд на протяжении которых Nginx будет отдавать конент из кеша и не обращаться к вашему приложению. Эта схема защитит ваше приложения от нагрузки, но она никак не сможет актуализировать кеш быстрей чем это указанно в max-age. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251806#msg-251806 From nginx-forum at nginx.us Tue Jul 15 14:34:01 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 10:34:01 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> Message-ID: <8bc3395ecef03a0b8f352ae1f2122c00.NginxMailingListRussian@forum.nginx.org> >Нет, на протяжении 600 секунд, браузер НЕ БУДЕТ делать запрос к серверу вообще, потому что вы ему сказали, что кеш можно использовать без ревалидации на протяжении 600 секунд. А у меня запросы идут к nginx, те браузерный кэш не используется. первый запрос, все кэши чистые: Request: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Connection:keep-alive Host:localhost:6543 User-Agent:Mozilla/5.0 Response: Cache-Control:max-age=600 Connection:keep-alive Content-Length:15 Content-Type:text/html; charset=UTF-8 Date:Tue, 15 Jul 2014 14:24:14 GMT Server:nginx/1.7.3 Второй ответ-запрос такой же. В логах nginx видно, что он оба запроса принял. Тк кэш у nginx был, к uwsgi он не прошёл. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251809#msg-251809 From nginx-forum at nginx.us Tue Jul 15 14:38:09 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 10:38:09 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> Message-ID: >Лично я разработчик а не администратор, ... ... там и зарплаты другие и задачи интересней ) Такие решения не от меня зависят, я лишь могу предложить. >Эта схема защитит ваше приложения от нагрузки, но она никак не сможет актуализировать кеш быстрей чем это указанно в max-age. Я же сказал, что мы можем чистить кэш nginx когда нам это нужно. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251810#msg-251810 From nginx-forum at nginx.us Tue Jul 15 14:43:23 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 10:43:23 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <8bc3395ecef03a0b8f352ae1f2122c00.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <8bc3395ecef03a0b8f352ae1f2122c00.NginxMailingListRussian@forum.nginx.org> Message-ID: <4334384b729e28247dc8a8cfc9abcc12.NginxMailingListRussian@forum.nginx.org> Budulianin Wrote: ------------------------------------------------------- > >Нет, на протяжении 600 секунд, браузер НЕ БУДЕТ делать запрос к > серверу вообще, потому что вы ему сказали, что кеш можно использовать > без ревалидации на протяжении 600 секунд. > > А у меня запросы идут к nginx, те браузерный кэш не используется. Конечно запросы к Nginx пойдут, если вы нажимаете F5, вы заставляете браузер делать запрос, это нормальное поведения браузера, так и должно быть. Вам нужно по другому тестировать, не обновляйте страницу в ручную, просто ходите по HTML страницам в которых прописаны src к вашей статике, в этом случаи браузер не будет делать запросы к статике, а будет их брать из кеша на протяжении 600 сек. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251811#msg-251811 From nginx-forum at nginx.us Tue Jul 15 14:50:51 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 10:50:51 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> Message-ID: > >Эта схема защитит ваше приложения от нагрузки, но она никак не сможет > актуализировать кеш быстрей чем это указанно в max-age. > Я же сказал, что мы можем чистить кэш nginx когда нам это нужно. Если у вас есть сторонний процесс который чистит кеш, тогда конечно можно использовать эту схему. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251812#msg-251812 From nginx-forum at nginx.us Tue Jul 15 14:56:18 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 10:56:18 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <4334384b729e28247dc8a8cfc9abcc12.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <8bc3395ecef03a0b8f352ae1f2122c00.NginxMailingListRussian@forum.nginx.org> <4334384b729e28247dc8a8cfc9abcc12.NginxMailingListRussian@forum.nginx.org> Message-ID: > браузер не будет делать запросы к статике Это html просто страница с текстом Content-Type: text/html; charset=UTF-8 Делаю запросы, через RestClient(апликуха хрома) и nginx получает только 1 запрос, все остальные запросы из кэша браузера достаются. Кэш браузера чищу, и только тогда nginx пишет в лог. Те браузерный кэш работает. Я нажимал не F5, а кнопку браузера, что видимо эквивалентно. Но я тогда не понимаю, когда вообще юзеру поможет браузерный кэш? Когда он будет по ссылкам ходить, только тогда из кэша браузера будет доставаться? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251813#msg-251813 From mdounin at mdounin.ru Tue Jul 15 14:56:18 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 15 Jul 2014 18:56:18 +0400 Subject: =?UTF-8?B?UmU6INCf0L7QvNC+0LPQuNGC0LUg0YEg0YDQtdC00LjRgNC10LrRgtC+0Lw=?= In-Reply-To: <3bc634ae918bebe8071066ee67358ff5.NginxMailingListRussian@forum.nginx.org> References: <20140715122216.GZ1849@mdounin.ru> <3bc634ae918bebe8071066ee67358ff5.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140715145618.GC1849@mdounin.ru> Hello! On Tue, Jul 15, 2014 at 09:22:01AM -0400, luckysrg wrote: > Спасибо за совет, но все равно остался вопрос как из секции 80 сделать > редирект на страницы корзины и личного кабинета, а из секции 443 все > редиректить на http, кроме страниц корзины и личного кабинета. Точно так же - для начала сделать для соответствующих страниц отдельные location'ы, а потом в нужных location'ах сделать перенаправления: server { listen 443 ssl; server_name example.com; location / { # by default, redirect to http return 301 http://$server_name$request_uri; } location /basket/ { # use https for basket ... } } server { listen 80; server_name example.com; location / { # use http by default ... } location /basket/ { # redirect basket to https return 301 https://$server_name$request_uri; } } Как именно выделить соответствующие страницы в случае вашего сайта, и что ещё потребуется для отображения этих страниц (e.g., картинки, на них используемые) - вопрос в первую очередь к вам. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Tue Jul 15 15:00:04 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 11:00:04 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> Message-ID: <9db2b962d3ca6929c126503cad124b51.NginxMailingListRussian@forum.nginx.org> >Если у вас есть сторонний процесс который чистит кеш, тогда конечно можно использовать эту схему. Можно по разному чистить кэш, даже руками) Главное сам факт, того что мы можем в любой момент всё у всех актуализировать. Значит моя схема вполне жизнеспособна и не выглядит нормально? Кладём основную нагрузку на nginx и немного на браузер. Чтобы пилить приложение, на это нужны время-деньги, а настроить nginx быстро, дёшево и практично. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251815#msg-251815 From nginx-forum at nginx.us Tue Jul 15 15:00:26 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 11:00:26 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <8bc3395ecef03a0b8f352ae1f2122c00.NginxMailingListRussian@forum.nginx.org> <4334384b729e28247dc8a8cfc9abcc12.NginxMailingListRussian@forum.nginx.org> Message-ID: <46713a8549e920029bce3baf84f23ed7.NginxMailingListRussian@forum.nginx.org> > Я нажимал не F5, а кнопку браузера, что видимо эквивалентно. Но я > тогда не понимаю, когда вообще юзеру поможет браузерный кэш? > Когда он будет по ссылкам ходить, только тогда из кэша браузера будет > доставаться? Да, обычные посетители сайта, обычно переходят на страницы по ссылкам, те кто обновляет страницу в ручную будут получать 304 статус без контента, что тоже очень оптимально, но юзеров которые нажимают на кнопку обновить намного меньше по сравнению с теми кто ходит по ссылкам. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251816#msg-251816 From nginx-forum at nginx.us Tue Jul 15 15:04:27 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 11:04:27 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <46713a8549e920029bce3baf84f23ed7.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <8bc3395ecef03a0b8f352ae1f2122c00.NginxMailingListRussian@forum.nginx.org> <4334384b729e28247dc8a8cfc9abcc12.NginxMailingListRussian@forum.nginx.org> <46713a8549e920029bce3baf84f23ed7.NginxMailingListRussian@forum.nginx.org> Message-ID: >те кто обновляет страницу в ручную будут получать 304 статус без контента, Только если в запросе, который должен закэшироваться, был заголовок-валидатор(ETag, Last-Modified) иначе нечего будет сравнивать. У меня сейчас нет их и nginx отдаёт 200. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251817#msg-251817 From nginx-forum at nginx.us Tue Jul 15 15:05:02 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 11:05:02 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <9db2b962d3ca6929c126503cad124b51.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> <9db2b962d3ca6929c126503cad124b51.NginxMailingListRussian@forum.nginx.org> Message-ID: <89dcc11671fdc636afe415f72ffef433.NginxMailingListRussian@forum.nginx.org> > Значит моя схема вполне жизнеспособна и не выглядит нормально? Кладём > основную нагрузку на nginx и немного на браузер. Я думаю да, но лучше проконсультироватся у разработчиков Nginx, как реагирует Nginx если кеш файлы исчезают, без его ведома, я думаю он нормально реагирует, но мало ли какие там могут быть ньюансы. > Чтобы пилить приложение, на это нужны время-деньги, а настроить nginx > быстро, дёшево и практично. Это понятно, ревалидировать кеш на в приложении - это стиль RestFull приложений, это очень правильный подход и на самом деле не сложный в разработке и его можно выполнять довольно быстро. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251818#msg-251818 From nginx-forum at nginx.us Tue Jul 15 15:08:00 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 11:08:00 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <8bc3395ecef03a0b8f352ae1f2122c00.NginxMailingListRussian@forum.nginx.org> <4334384b729e28247dc8a8cfc9abcc12.NginxMailingListRussian@forum.nginx.org> <46713a8549e920029bce3baf84f23ed7.NginxMailingListRussian@forum.nginx.org> Message-ID: <2f206934e4061c7648b9e70df457d5ac.NginxMailingListRussian@forum.nginx.org> > >те кто обновляет страницу в ручную будут получать 304 статус без > контента, > Только если в запросе, который должен закэшироваться, был > заголовок-валидатор(ETag, Last-Modified) иначе нечего будет > сравнивать. > У меня сейчас нет их и nginx отдаёт 200. С этого и надо было начинать, они нужны обязательно если вы хотите клиенту отдавать 304 без контента. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251819#msg-251819 From nginx-forum at nginx.us Tue Jul 15 15:11:13 2014 From: nginx-forum at nginx.us (luckysrg) Date: Tue, 15 Jul 2014 11:11:13 -0400 Subject: =?UTF-8?B?UmU6INCf0L7QvNC+0LPQuNGC0LUg0YEg0YDQtdC00LjRgNC10LrRgtC+0Lw=?= In-Reply-To: <20140715145618.GC1849@mdounin.ru> References: <20140715145618.GC1849@mdounin.ru> Message-ID: <8a42796d1788406578c3ff8b570092b3.NginxMailingListRussian@forum.nginx.org> Огромное спасибо, Это именно то, что мне было нужно !!! Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251769,251820#msg-251820 From nginx-forum at nginx.us Tue Jul 15 15:14:12 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 11:14:12 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <89dcc11671fdc636afe415f72ffef433.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> <9db2b962d3ca6929c126503cad124b51.NginxMailingListRussian@forum.nginx.org> <89dcc11671fdc636afe415f72ffef433.NginxMailingListRussian@forum.nginx.org> Message-ID: >Это понятно, ревалидировать кеш на в приложении - это стиль RestFull приложений, НЕ в приложении? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251821#msg-251821 From nginx-forum at nginx.us Tue Jul 15 15:17:03 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 11:17:03 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> <9db2b962d3ca6929c126503cad124b51.NginxMailingListRussian@forum.nginx.org> <89dcc11671fdc636afe415f72ffef433.NginxMailingListRussian@forum.nginx.org> Message-ID: <04ffe4c62a3525d4361a419bd5069588.NginxMailingListRussian@forum.nginx.org> Budulianin Wrote: ------------------------------------------------------- > >Это понятно, ревалидировать кеш на в приложении - это стиль RestFull > приложений, > НЕ в приложении? Я имел виду, ревалидация В приложении это - RESTful стиль. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251822#msg-251822 From nginx-forum at nginx.us Tue Jul 15 15:29:10 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 11:29:10 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <04ffe4c62a3525d4361a419bd5069588.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> <9db2b962d3ca6929c126503cad124b51.NginxMailingListRussian@forum.nginx.org> <89dcc11671fdc636afe415f72ffef433.NginxMailingListRussian@forum.nginx.org> <04ffe4c62a3525d4361a419bd5069588.NginxMailingListRussian@forum.nginx.org> Message-ID: <60fb586385644017319bf6f82c899319.NginxMailingListRussian@forum.nginx.org> >Я имел виду, ревалидация В приложении это - RESTful стиль. Не знал, насколько я знаю, обычно REST преподносят, как набор методов(действий), которые можно выполнить с объектом и путь к этому объекту. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251823#msg-251823 From nginx-forum at nginx.us Tue Jul 15 15:34:42 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 11:34:42 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <2f206934e4061c7648b9e70df457d5ac.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <8bc3395ecef03a0b8f352ae1f2122c00.NginxMailingListRussian@forum.nginx.org> <4334384b729e28247dc8a8cfc9abcc12.NginxMailingListRussian@forum.nginx.org> <46713a8549e920029bce3baf84f23ed7.NginxMailingListRussian@forum.nginx.org> <2f206934e4061c7648b9e70df457d5ac.NginxMailingListRussian@forum.nginx.org> Message-ID: >С этого и надо было начинать, они нужны обязательно если вы хотите клиенту отдавать 304 без контента. А можно ли создавать ETag и Last-Modified на стороне nginx и для статики и для динамики? есть директива etag on; но написано что она только для статики автоматом вычисляет его. Можно наверно использовать (Модуль ngx_http_ssi_module поддерживает две встроенные переменные) $date_gmt текущее время в GMT. Формат задаётся командой config с параметром timefmt. Для Last-Modified Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251824#msg-251824 From nginx-forum at nginx.us Tue Jul 15 15:35:07 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 11:35:07 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <60fb586385644017319bf6f82c899319.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> <9db2b962d3ca6929c126503cad124b51.NginxMailingListRussian@forum.nginx.org> <89dcc11671fdc636afe415f72ffef433.NginxMailingListRussian@forum.nginx.org> <04ffe4c62a3525d4361a419bd5069588.NginxMailingListRussian@forum.nginx.org> <60fb586385644017319bf6f82c899319.NginxMailingListRussian@forum.nginx.org> Message-ID: <353688febe46c909ddc7e300aafdceed.NginxMailingListRussian@forum.nginx.org> > >Я имел виду, ревалидация В приложении это - RESTful стиль. > > Не знал, насколько я знаю, обычно REST преподносят, как набор > методов(действий), которые можно выполнить с объектом и путь к этому > объекту. Да, но не только, основная идея в том, что клиент и сервер могут полностью описать своё состояния на уровне HTTP заголовков, в общем это хороший стиль который позволит другим приложениям (например Nginx) общаться с вашим приложением на уровне HTTP заголовков. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251825#msg-251825 From nginx-forum at nginx.us Tue Jul 15 15:36:59 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 11:36:59 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <8bc3395ecef03a0b8f352ae1f2122c00.NginxMailingListRussian@forum.nginx.org> <4334384b729e28247dc8a8cfc9abcc12.NginxMailingListRussian@forum.nginx.org> <46713a8549e920029bce3baf84f23ed7.NginxMailingListRussian@forum.nginx.org> <2f206934e4061c7648b9e70df457d5ac.NginxMailingListRussian@forum.nginx.org> Message-ID: > >С этого и надо было начинать, они нужны обязательно если вы хотите > клиенту отдавать 304 без контента. > А можно ли создавать ETag и Last-Modified на стороне nginx и для > статики и для динамики? > > есть директива etag on; но написано что она только для статики > автоматом вычисляет его. > > Можно наверно использовать (Модуль ngx_http_ssi_module поддерживает > две встроенные переменные) > $date_gmt > текущее время в GMT. Формат задаётся командой config с параметром > timefmt. > > Для Last-Modified Возможно можно, точно не знаю, у меня не было потребности это создавать в Nginx на лету. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251826#msg-251826 From nginx-forum at nginx.us Tue Jul 15 15:42:41 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 11:42:41 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <353688febe46c909ddc7e300aafdceed.NginxMailingListRussian@forum.nginx.org> References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> <9db2b962d3ca6929c126503cad124b51.NginxMailingListRussian@forum.nginx.org> <89dcc11671fdc636afe415f72ffef433.NginxMailingListRussian@forum.nginx.org> <04ffe4c62a3525d4361a419bd5069588.NginxMailingListRussian@forum.nginx.org> <60fb586385644017319bf6f82c899319.NginxMailingListRussian@forum.nginx.org> <353688febe46c909ddc7e300aafdceed.NginxMailingListRussian@forum.nginx.org> Message-ID: >в общем это хороший стиль Ну сейчас все стараются следовать REST. А вот про учёт ревалидации не знал, спасибо, запомню. Обычно GET POST PUT PATCH DELETE, больше пока ничего не видел. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251827#msg-251827 From gmm at csdoc.com Tue Jul 15 17:03:11 2014 From: gmm at csdoc.com (Gena Makhomed) Date: Tue, 15 Jul 2014 20:03:11 +0300 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: References: <6221735.7p0lz4VUPH@vbart-workstation> <7321fff4ad638062e21b3841a65d4bfa.NginxMailingListRussian@forum.nginx.org> <8f54f883a20606aa7e4a4cca15d72021.NginxMailingListRussian@forum.nginx.org> <1d42957d2d4963295a4a271c4021d369.NginxMailingListRussian@forum.nginx.org> <8ece86874b87c9f1c80ff63dfed661f3.NginxMailingListRussian@forum.nginx.org> <8d2a700d3b8c2064b6877140d0fbaa8d.NginxMailingListRussian@forum.nginx.org> <1f94a8b42298fab385445dc6777d5965.NginxMailingListRussian@forum.nginx.org> <245da5a0fa2e40e827ebe6e957c4f405.NginxMailingListRussian@forum.nginx.org> Message-ID: <53C55ECF.1010306@csdoc.com> On 15.07.2014 17:29, S.A.N wrote: > В вашей схеме кеш контента будет валидным столько сколько вы указали Nginx > и не важно что браузеры будут делать запрос чаще, Nginx будет отдавать им > контент из кеша и не обращаться к вашему приложению, логика кеширования в > Nginx такая же как в браузерах, я уже вам объяснял что значит max-age, для > Nginx он означает тоже самое - это кол-во секунд на протяжении которых Nginx > будет отдавать конент из кеша и не обращаться к вашему приложению. "логика кеширования в Nginx такая же как в браузерах", - есть и отличия: http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_bypass если выполняется условие fastcgi_cache_bypass и не выполняется условие fastcgi_no_cache - то это и будет out-of-order обновление кеша. -- Best regards, Gena From nginx-forum at nginx.us Tue Jul 15 18:10:32 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 14:10:32 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <53C55ECF.1010306@csdoc.com> References: <53C55ECF.1010306@csdoc.com> Message-ID: <820af25b15a8942690c28cfaf8e8a9f9.NginxMailingListRussian@forum.nginx.org> > "логика кеширования в Nginx такая же как в браузерах", - есть и > отличия: > > http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cac > he_bypass > > если выполняется условие fastcgi_cache_bypass и не выполняется > условие fastcgi_no_cache - то это и будет out-of-order обновление > кеша. Да, есть в Nginx инструментарий для изменения логики кеширования... К сожалению есть отличия и в самой реализации кеширования Nginx и браузеров, то что будет работать в браузерах может не работать в Nginx, например Nginx будет удалять валидаторы из клиентских заголовков, если нет файла кеша в Nginx, или невозможность кеширования с max-age=0. Но все эти детали лучше не говорить тем кто только начинает изучать механизмы кеширования в Nginx ) По этому я советую использовать REST стиль в разработке приложений, со временем все эти отличия между Nginx и браузером будут исчезать, и использования директив *_cache_bypass и *_no_cache будет скорей исключением чем правилом, но может я ошибаюсь. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251833#msg-251833 From nginx-forum at nginx.us Tue Jul 15 18:23:19 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 14:23:19 -0400 Subject: =?UTF-8?B?0JfQsNC00LDQstCw0YLRjCBMYXN0LW1vZGlmaWVkINC90LAg0YHRgtC+0YDQvtC9?= =?UTF-8?B?0LUgbmdpbngu?= Message-ID: <579f2bc23fc9e0f88c80ea262a0aa268.NginxMailingListRussian@forum.nginx.org> Правильно ли я понимаю, что Last-modified нельзя задать, через nginx, для ответа, который nginx кэширует? Можно задавать через add_header Last-Modified $date_gmt; Но тогда теряется смысл этого заголовка, потому что при каждом обращении к nginx, в заголовке будет новое значение. Соответственно If-Modified-Since никогда не совпадёт с этим значением и 304 не отправят на клиент. У статического контента всё просто, Last-modified это дата последнего изменения. А вот как задать на стороне nginx Last-modified для ответа полученного на основе динамической страницы, чтобы он осел в кэше и не изменялся пока не будет очередного запроса к бекенду? Если посылать Last-modified с бекенда, то тогда всё норм, он появится в кэше nginx и пока он там, проверка If-Modified-Since будет работать и будет возвращаться 304. Но это в случае когда Last-modified задаёт бекенд, а как задать через nginx? Это реально? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251834,251834#msg-251834 From nginx-forum at nginx.us Tue Jul 15 18:28:54 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 15 Jul 2014 14:28:54 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <820af25b15a8942690c28cfaf8e8a9f9.NginxMailingListRussian@forum.nginx.org> References: <53C55ECF.1010306@csdoc.com> <820af25b15a8942690c28cfaf8e8a9f9.NginxMailingListRussian@forum.nginx.org> Message-ID: <617878dd69f2cae162e28b3d48c9f57d.NginxMailingListRussian@forum.nginx.org> >Но все эти детали лучше не говорить тем кто только начинает изучать механизмы кеширования в Nginx ) Почему? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251835#msg-251835 From nginx-forum at nginx.us Tue Jul 15 18:37:24 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 14:37:24 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgiB1d3NnaSBzZXQgaGVhZGVyLCDRh9C10Lwg0LfQsNC80LXQvdC4?= =?UTF-8?B?0YLRjD8=?= In-Reply-To: <617878dd69f2cae162e28b3d48c9f57d.NginxMailingListRussian@forum.nginx.org> References: <53C55ECF.1010306@csdoc.com> <820af25b15a8942690c28cfaf8e8a9f9.NginxMailingListRussian@forum.nginx.org> <617878dd69f2cae162e28b3d48c9f57d.NginxMailingListRussian@forum.nginx.org> Message-ID: <30bb73afbb9ffee9b962f6800c5d4948.NginxMailingListRussian@forum.nginx.org> > >Но все эти детали лучше не говорить тем кто только начинает изучать > механизмы кеширования в Nginx ) > Почему? Чтобы не пугать, раньше времени ) Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251837#msg-251837 From mdounin at mdounin.ru Tue Jul 15 21:21:15 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Wed, 16 Jul 2014 01:21:15 +0400 Subject: =?UTF-8?B?UmU6INCX0LDQtNCw0LLQsNGC0YwgTGFzdC1tb2RpZmllZCDQvdCwINGB0YLQvtGA?= =?UTF-8?B?0L7QvdC1IG5naW54Lg==?= In-Reply-To: <579f2bc23fc9e0f88c80ea262a0aa268.NginxMailingListRussian@forum.nginx.org> References: <579f2bc23fc9e0f88c80ea262a0aa268.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140715212115.GE1849@mdounin.ru> Hello! On Tue, Jul 15, 2014 at 02:23:19PM -0400, Budulianin wrote: > Правильно ли я понимаю, что Last-modified нельзя задать, через nginx, для > ответа, который nginx кэширует? > > Можно задавать через add_header Last-Modified $date_gmt; > Но тогда теряется смысл этого заголовка, потому что при каждом обращении к > nginx, в заголовке будет новое значение. > Соответственно If-Modified-Since никогда не совпадёт с этим значением и 304 > не отправят на клиент. > > У статического контента всё просто, Last-modified это дата последнего > изменения. > А вот как задать на стороне nginx Last-modified для ответа полученного на > основе динамической страницы, чтобы он осел в кэше и не изменялся пока не > будет очередного запроса к бекенду? > > Если посылать Last-modified с бекенда, то тогда всё норм, он появится в кэше > nginx и пока он там, проверка If-Modified-Since будет работать и будет > возвращаться 304. > Но это в случае когда Last-modified задаёт бекенд, а как задать через nginx? > Это реально? Вообще такие вещи должен делать бекенд. Если он не умеет и нет возможности его исправить - в качестве костыля можно за кеширующим nginx'ом поставить ещё один (достаточно виртуального сервера в рамках того же nginx'а), сделав двойное проксирование, и добавлять заголовок Last-Modified там, с помощью add_header. Тогда в кеш будет попадать ответ уже с Last-Modified, и запросы с If-Modified-Since будут работать и возвращать 304, пока соответствующий ответ в кеше. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Tue Jul 15 22:03:36 2014 From: nginx-forum at nginx.us (luckysrg) Date: Tue, 15 Jul 2014 18:03:36 -0400 Subject: =?UTF-8?B?UmU6INCf0L7QvNC+0LPQuNGC0LUg0YEg0YDQtdC00LjRgNC10LrRgtC+0Lw=?= In-Reply-To: <20140715145618.GC1849@mdounin.ru> References: <20140715145618.GC1849@mdounin.ru> Message-ID: <561f005fbd58fb358aaf2b1e11f830a3.NginxMailingListRussian@forum.nginx.org> Подскажите можно ли в location добавить AJAX и JSON запросы, что-бы они не редиректились? и если можно, то как? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251769,251846#msg-251846 From mdounin at mdounin.ru Tue Jul 15 22:52:03 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Wed, 16 Jul 2014 02:52:03 +0400 Subject: Cache revalidation using If-None-Match In-Reply-To: References: <079e52f9f8fa022f68cbaaeab09fb56b.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140715225203.GG1849@mdounin.ru> Hello! On Mon, Jul 14, 2014 at 11:37:21PM -0400, S.A.N wrote: > Nginx 1.7.3, отличная версия, в ней полностью решен вопрос с ETag. > > Но есть мелочи которых очень не хватает, их всего две ) > > 1. Нельзя получить от клиента валидаторы (?If-Modified-Since? и > ?If-None-Match?) если файла кеша нет, эта ситуация возникает когда бекенд > отдавал заголовки Cache-Control: private, для контента который должен > кешироватся только в браузере (не публичный кеш). > Проблема решается если в конфиге прописать > fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match if_not_empty; > fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since if_not_empty; > Но тогда будет проблема с публичным кешем, потому что бекенд может получить > валидаторы от браузера, ответить статусом 304, Cache-Control: public... и > Nginx положит этот ответ (статусом 304 nobody) в файл своего кеша и будет > его отдавать всем. > Я уже писал, про эту проблему > http://forum.nginx.org/read.php?21,245951,245951#msg-245951 > Хочется её как-то решить. Самое простое решение этой проблемы - не включать кешироване там, где оно не нужно. > 2. Нельзя переопределить через HTTP заголовки значения директивы > fastcgi_cache_use_stale и установить для кеширования max-age=0 > Для чего это нужно, в конфиге прописывается директива > fastcgi_cache_use_stale error, это значения нужно для 80% uri. > Но есть динамические страницы, которые нужно кешировать, но обязательно > проводить ревалидацию на каждый запрос. > Пример из жизни где мы это юзаем. > Есть страница отчетов с графиками различной статистики, которая может > меняться раз в сутки или каждую секунду, заранее это не известно. Доступ к > этим отчетам имеют только залогиненые пользователи из определенных групп. > Кол-во этих юзеров довольно высоко и количество запросов к этим отчетам так > же высоко, по этому есть смысл их кешировать, но отдавать только после > проведения проверка на вхождения юзара в нужную групу и на актуальность > валидаторов (ETag). > Есть способ как создать кеш с max-age=0, через X-Accel-Expires: $time-1. > Но нет способа как динамически, сказать Nginx не использовать > cache_use_stale для этого uri, прописать в конфиге все варианты этих uri > сложно они динамические и не шаблонные, добавлять какой-то спец признак по > которому можно создать общий location в принципе можно, но хочется более > красивого и системного решения. На мой взгляд таким решением может стать > Cache-Control: must-revalidate, если бекенд отдает этот заголовок, он > сохраняется в кеш, но при повторном использовании кеша, Nginx всегда > выполняет ревалидацию (must-revalidate), если бекенд не работает отдать > клиенту статус ошибки. Это конечно будет иметь определенный оверхед, но > такой кеш намного эффективней, чем каждый раз повторно генерировать отчет и > все графики. Если я правильно понял этот поток текста, то на выходе вы хотите получить что-то вроде "The stale-if-error Cache-Control Extension", http://tools.ietf.org/html/rfc5861#section-4. Т.е. возможность задать в заголовках ответа - можно ли этот ответ в дальнейшем использовать при ошибках. (Планов по реализации соответствующего расширения - по крайней мере в ближайшем будущем - нет.) IMHO, простейшее и наиболее правильное решение - опять же, разделить сайт на location'ы и задать для каждого locatin'а нужные настройки. А если у вас соответствующие ресурсы нельзя нормально отделить друг от друга - это повод задуматься о структуре сайта. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Wed Jul 16 00:09:11 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 20:09:11 -0400 Subject: Cache revalidation using If-None-Match In-Reply-To: <20140715225203.GG1849@mdounin.ru> References: <20140715225203.GG1849@mdounin.ru> Message-ID: <6b293936477579272861ef736d7b988a.NginxMailingListRussian@forum.nginx.org> > Если я правильно понял этот поток текста, то на выходе вы хотите > получить что-то вроде "The stale-if-error Cache-Control > Extension", http://tools.ietf.org/html/rfc5861#section-4. Т.е. > возможность задать в заголовках ответа - можно ли этот ответ в > дальнейшем использовать при ошибках. Да, это очень похоже на то что нам надо. Задача заключается в том, чтобы найти подходящие HTTP заголовки, которые будут переопределять значения таких директив как: fastcgi_cache_lock fastcgi_cache_lock_timeout fastcgi_cache_use_stale Cache-Control: stale-while-revalidate=0 Этот заголовок можно использовать, чтобы включать и отключать директиву cache_lock и настраивать cache_lock_timeout. Если значения stale-while-revalidate равно 0, то для Nginx это должно означать cache_lock off. Если значения stale-while-revalidate положительное это должно означать cache_lock on. Само значения stale-while-revalidate, можно использовать как cache_lock_timeout. Cache-Control: stale-if-error=0 Этот заголовок можно использовать, чтобы отключать директиву cache_use_stale Если значения stale-if-error равно 0, то для Nginx это должно означать cache_use_stale off. > (Планов по реализации соответствующего расширения - по крайней > мере в ближайшем будущем - нет.) Это не срочные работы. Они будут очень полезны для тех кто хочет управлять кешированием через бекенд, а не програмить в конфигах Nginx. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251189,251849#msg-251849 From nginx-forum at nginx.us Wed Jul 16 00:44:43 2014 From: nginx-forum at nginx.us (S.A.N) Date: Tue, 15 Jul 2014 20:44:43 -0400 Subject: Cache revalidation using If-None-Match In-Reply-To: <6b293936477579272861ef736d7b988a.NginxMailingListRussian@forum.nginx.org> References: <20140715225203.GG1849@mdounin.ru> <6b293936477579272861ef736d7b988a.NginxMailingListRussian@forum.nginx.org> Message-ID: <3d969b907c1722389daccd4700961cb6.NginxMailingListRussian@forum.nginx.org> Наверно стоит объяснить почему логику кеширования мы вынесли на бекенд и минимально используем конфиг Nginx. Нашим бекендом, пользуются не только браузеры но и мобил приложения, у них логика кеширования очень продвинутая, там учитывается временное пропадания online, в этом случаи клиентское приложения использует свой локал кеш. Бекенд должен указывать какой кеш можно использовать в ofline какой нет. Так же у нас на разных серверах работают PHPD (daemon), в будущем планируется общения между демонами внутри дата центра, напрямую без Nginx. Скорей всего это будет cURL и по этому бекенд должен уметь сам отвечать за HTTP кеширования а не рассчитывать на Nginx конфиг. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251189,251850#msg-251850 From pavel2000 at ngs.ru Wed Jul 16 09:57:24 2014 From: pavel2000 at ngs.ru (Pavel V.) Date: Wed, 16 Jul 2014 16:57:24 +0700 Subject: =?UTF-8?B?0J3QtdC+0LHRhdC+0LTQuNC80L4g0LjRgdC/0YDQsNCy0LvQtdC90LjQtSDQsiA=?= =?UTF-8?B?0LTQvtC60YPQvNC10L3RgtCw0YbQuNC4?= Message-ID: <969168994.20140716165724@ngs.ru> Здравствуйте, Nginx-ru. Просьба исправить в документации http://nginx.org/ru/docs/http/ngx_http_core_module.html#location абзац: >Если location задан префиксной строкой со слэшом в конце и запросы обрабатываются при помощи >proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass или memcached_pass, а в ответ на запрос с URI равным >этой строке, но без завершающего слэша, будет возвращено постоянное перенаправление с кодом 301 на >URI с добавленным в конец слэшом. Если такое поведение нежелательно, можно задать точное совпадение >URI и location, например: видимо, необходимо убрать "а" в "..., а в ответ..." ну и пунктуацию подправить. Спасибо. -- С уважением, Pavel mailto:pavel2000 at ngs.ru From maxim at nginx.com Wed Jul 16 10:22:02 2014 From: maxim at nginx.com (Maxim Konovalov) Date: Wed, 16 Jul 2014 14:22:02 +0400 Subject: nginx-1.7.3 In-Reply-To: <4e6efe4efe2c8cd1871af1e50d91ebfd.NginxMailingListRussian@forum.nginx.org> References: <20140708134538.GV1849@mdounin.ru> <4e6efe4efe2c8cd1871af1e50d91ebfd.NginxMailingListRussian@forum.nginx.org> Message-ID: <53C6524A.4020603@nginx.com> Добрый день, On 7/8/14 7:32 PM, S.A.N wrote: >> Добавление: ревалидация элементов кэша теперь, если это возможно, > использует заголовок If-None-Match. > > Отлично, спасибо! > > Когда появится данная версия в ваших пакетах для CentOS 6? > В http://nginx.org/packages/mainline/centos/6/ её ещё нет. > > Кстати можно уже создавать новую папку > (http://nginx.org/packages/mainline/centos/7/) для пакетов CentOS 7, на днях > был релиз данной OS. > Пакеты для CentOS 7 доступны. http://nginx.org/en/linux_packages.html#mainline -- Maxim Konovalov http://nginx.com From nginx-forum at nginx.us Wed Jul 16 10:36:03 2014 From: nginx-forum at nginx.us (luckysrg) Date: Wed, 16 Jul 2014 06:36:03 -0400 Subject: =?UTF-8?B?0LzQvtC20L3QviDQu9C4INCyIGxvY2F0aW9uINC00L7QsdCw0LLQuNGC0YwgQUpB?= =?UTF-8?B?WCDQuCBKU09OINC30LDQv9GA0L7RgdGLID8=?= Message-ID: Подскажите можно ли в location добавить AJAX и JSON запросы, что-бы они не редиректились? и если можно, то как? Спасибо за ответ. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251858,251858#msg-251858 From gmm at csdoc.com Wed Jul 16 10:44:58 2014 From: gmm at csdoc.com (Gena Makhomed) Date: Wed, 16 Jul 2014 13:44:58 +0300 Subject: =?UTF-8?B?UmU6INC80L7QttC90L4g0LvQuCDQsiBsb2NhdGlvbiDQtNC+0LHQsNCy0LjRgtGM?= =?UTF-8?B?IEFKQVgg0LggSlNPTiDQt9Cw0L/RgNC+0YHRiyA/?= In-Reply-To: References: Message-ID: <53C657AA.60304@csdoc.com> On 16.07.2014 13:36, luckysrg wrote: > Подскажите можно ли в location добавить AJAX и JSON запросы, что-бы они не > редиректились? и если можно, то как? > > Спасибо за ответ. http://segfault.kiev.ua/smart-questions-ru.html -- Best regards, Gena From nginx-forum at nginx.us Wed Jul 16 13:39:10 2014 From: nginx-forum at nginx.us (Edrard) Date: Wed, 16 Jul 2014 09:39:10 -0400 Subject: =?UTF-8?B?0J3QtdGB0LrQvtC70YzQutC+IGV4cGlyZQ==?= Message-ID: Здравствуйте. Нужна ваша помощь. Необходимо выставить для одной папки /images expire равный 30d, а для всей остальной статистики 1d Сейчас сделано вот так: location /images { proxy_pass http://backend; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffer_size 16k; proxy_buffers 32 16k; expires 30d; proxy_cache static; proxy_cache_valid 30d; proxy_ignore_headers "Cache-Control" "Expires"; proxy_cache_key "$uri$is_args$args"; proxy_cache_lock on; } location ~* \.(jpg|jpeg|gif|png|ico|css|midi|wav|bmp|js|swf|flv|avi|djvu|mp3|xml|zip)$ { proxy_pass http://backend; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffer_size 16k; proxy_buffers 32 16k; expires 1d; proxy_cache static; proxy_cache_valid 1d; proxy_ignore_headers "Cache-Control" "Expires"; proxy_cache_key "$uri$is_args$args"; proxy_cache_lock on; } В папке /images есть jpg и png соответсвенно. Но к сожалению, везде все равно выставляется 1d Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251860,251860#msg-251860 From nginx-forum at nginx.us Wed Jul 16 13:41:19 2014 From: nginx-forum at nginx.us (S.A.N) Date: Wed, 16 Jul 2014 09:41:19 -0400 Subject: nginx-1.7.3 In-Reply-To: <53C6524A.4020603@nginx.com> References: <53C6524A.4020603@nginx.com> Message-ID: > Пакеты для CentOS 7 доступны. > > http://nginx.org/en/linux_packages.html#mainline Да, спасибо! Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251548,251862#msg-251862 From pavel2000 at ngs.ru Wed Jul 16 13:50:19 2014 From: pavel2000 at ngs.ru (Pavel V.) Date: Wed, 16 Jul 2014 20:50:19 +0700 Subject: =?UTF-8?B?UmU6INCd0LXRgdC60L7Qu9GM0LrQviBleHBpcmU=?= In-Reply-To: References: Message-ID: <451504294.20140716205019@ngs.ru> Здравствуйте, Edrard. Вы писали 16 июля 2014 г., 20:39:10: > Здравствуйте. Нужна ваша помощь. Необходимо выставить для одной папки > /images expire равный 30d, а для всей остальной статистики 1d Пожалуйста, прочитайте документацию. Она написана по-русски и достаточно внятно. http://nginx.org/ru/docs/http/ngx_http_core_module.html#location Цитирую: >Чтобы найти location, соответствующий запросу, вначале проверяются location?ы, заданные префиксными >строками (префиксные location?ы). Среди них ищется location с совпадающим префиксом максимальной >длины и запоминается. Затем проверяются регулярные выражения, в порядке их следования в >конфигурационном файле. >Если у совпавшего префиксного location?а максимальной длины указан модификатор ?^~?, то регулярные >выражения не проверяются. У вас модификатор не указан. -- С уважением, Pavel mailto:pavel2000 at ngs.ru From nginx-forum at nginx.us Thu Jul 17 05:40:25 2014 From: nginx-forum at nginx.us (helgen09) Date: Thu, 17 Jul 2014 01:40:25 -0400 Subject: =?UTF-8?B?c3VicyBmaWx0ZXIg0L/QvtC0IHdpbmRvd3M=?= Message-ID: <80a638dff46d6627812715353c006bba.NginxMailingListRussian@forum.nginx.org> Мой вопрос наверное глупый, но ответа на него я пока не нашел, подскажите есть ли модуль nginx subs_filter под windows и как его подключить, иначе nginx выдает ошибку unknown directive "subs_filter". Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251867,251867#msg-251867 From rogat1y at gmail.com Thu Jul 17 09:06:44 2014 From: rogat1y at gmail.com (Maxim Kozlov) Date: Thu, 17 Jul 2014 13:06:44 +0400 Subject: =?UTF-8?B?c3ViX2ZpbHRlciDQuCDRgdC40LzQstC+0LsgJg==?= Message-ID: Всем привет. необходимо заменять в ответе символы & на & location ~(.*)/page.html { sub_filter & '&'; sub_filter_once off; } но такой конфиг не срабатывает. А вот такой конфиг location ~(.*)/page.html { sub_filter &foo '&foo'; sub_filter_once off; } отрабатывает правильно. Я так понимаю надо символ & как-то экранировать в конфиге? -------------- next part -------------- An HTML attachment was scrubbed... URL: From gmm at csdoc.com Thu Jul 17 09:09:32 2014 From: gmm at csdoc.com (Gena Makhomed) Date: Thu, 17 Jul 2014 12:09:32 +0300 Subject: Cache revalidation using If-None-Match In-Reply-To: References: <079e52f9f8fa022f68cbaaeab09fb56b.NginxMailingListRussian@forum.nginx.org> Message-ID: <53C792CC.4090700@csdoc.com> On 15.07.2014 6:37, S.A.N wrote: > 1. Нельзя получить от клиента валидаторы (?If-Modified-Since? и > ?If-None-Match?) если файла кеша нет, эта ситуация возникает когда бекенд > отдавал заголовки Cache-Control: private, для контента который должен > кешироватся только в браузере (не публичный кеш). Откуда nginx в момент отправки запроса на backend может знать вернет ему backend в ответе заголовок Cache-Control: private или нет? > Проблема решается если в конфиге прописать > fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match if_not_empty; > fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since if_not_empty; > Но тогда будет проблема с публичным кешем, потому что бекенд может получить > валидаторы от браузера, ответить статусом 304, Cache-Control: public... и > Nginx положит этот ответ (статусом 304 nobody) в файл своего кеша и будет > его отдавать всем. Вот именно поэтому nginx и убирает эти два заголовка при отправке запроса на backend, если в location включено кеширование. > Я уже писал, про эту проблему > http://forum.nginx.org/read.php?21,245951,245951#msg-245951 > Хочется её как-то решить. Есть один способ: http://www.lexa.ru/nginx-ru/msg30320.html И второй способ: просто не включать кеширование на стороне nginx в тех location`ах, где оно не нужно. > ...нет способа как динамически, сказать Nginx не использовать > cache_use_stale для этого uri, прописать в конфиге все варианты этих uri > сложно они динамические и не шаблонные, добавлять какой-то спец признак по > которому можно создать общий location в принципе можно, но хочется более > красивого и системного решения. Более красивое и системное решение - это разнести uri с разными настройками кеширования по разным location`ам или виртуальным серверам в конфиге nginx. Например, http://www.example.com/ - одна политика кеширования, http://example.com/ - вторая, http://stat.example.com/ - третья. Это если нельзя легко и просто разделить uri по префиксам location. -- Best regards, Gena From gmm at csdoc.com Thu Jul 17 09:48:12 2014 From: gmm at csdoc.com (Gena Makhomed) Date: Thu, 17 Jul 2014 12:48:12 +0300 Subject: Cache revalidation using If-None-Match In-Reply-To: <3d969b907c1722389daccd4700961cb6.NginxMailingListRussian@forum.nginx.org> References: <20140715225203.GG1849@mdounin.ru> <6b293936477579272861ef736d7b988a.NginxMailingListRussian@forum.nginx.org> <3d969b907c1722389daccd4700961cb6.NginxMailingListRussian@forum.nginx.org> Message-ID: <53C79BDC.7040305@csdoc.com> On 16.07.2014 3:09, S.A.N wrote: > Они будут очень полезны для тех кто хочет управлять кешированием через > бекенд, а не програмить в конфигах Nginx. On 16.07.2014 3:44, S.A.N wrote: > Наверно стоит объяснить почему логику кеширования мы вынесли на бекенд и > минимально используем конфиг Nginx. У nginx конфиг декларативный. "програмить в конфигах nginx" - это говорится про попытки императивного программирования логики формирования ответа сервера в конфиге nginx, вместо того, чтобы вынести формирование HTTP ответа на backend. Вы же пытаетесь часть конфига nginx перенести на backend и программировать конфиг nginx через заголовки HTTP ответа. Вместо того, чтобы один раз описать то, что хотите получить в конфиге nginx в декларативном стиле и не грузить backend динамическим формированием/переопределением конфига nginx. Это у вас тоже layering violation, только уже в другую сторону. > Так же у нас на разных серверах работают PHPD (daemon), в будущем > планируется общения между демонами внутри дата центра, напрямую без Nginx. У варианта использования phpd разве есть какие-то преимущества по сравнению с вариантом nginx+php-fpm, если связь между nginx и php-fpm делать через unix domain socket ? подробнее - см. http://php-fpm.org/about/ тем более, что phpd уже deprecated > Скорей всего это будет cURL и по этому бекенд должен уметь сам отвечать за > HTTP кеширования а не рассчитывать на Nginx конфиг. В таком случае - backend`у тем более нет смысла пытаться перепрограммировать конфиги nginx через заголовки HTTP ответов. Поэтому поведение nginx следует описывать именно что в конфиге nginx. Если для разных location`ов / виртуальных серверов nginx должен кешировать по разному - это надо явно декларировать в конфиге. -- Best regards, Gena From vbart at nginx.com Thu Jul 17 09:55:58 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Thu, 17 Jul 2014 13:55:58 +0400 Subject: =?UTF-8?B?UmU6IHN1Yl9maWx0ZXIg0Lgg0YHQuNC80LLQvtC7ICY=?= In-Reply-To: References: Message-ID: <1971580.nHXtfMsVeU@vbart-workstation> On Thursday 17 July 2014 13:06:44 Maxim Kozlov wrote: > Всем привет. > > необходимо заменять в ответе символы & на & > > location ~(.*)/page.html { > sub_filter & '&'; > sub_filter_once off; > } > но такой конфиг не срабатывает. > > А вот такой конфиг > location ~(.*)/page.html { > sub_filter &foo '&foo'; > sub_filter_once off; > } > отрабатывает правильно. > > Я так понимаю надо символ & как-то экранировать в конфиге? > Просто алгоритм sub_filter не умеет искать отдельные символы. Минимальный размер строки для поиска сейчас - два символа. -- Валентин Бартенев From nginx-forum at nginx.us Thu Jul 17 10:09:29 2014 From: nginx-forum at nginx.us (Edrard) Date: Thu, 17 Jul 2014 06:09:29 -0400 Subject: =?UTF-8?B?UmU6INCd0LXRgdC60L7Qu9GM0LrQviBleHBpcmU=?= In-Reply-To: <451504294.20140716205019@ngs.ru> References: <451504294.20140716205019@ngs.ru> Message-ID: <5700fcba435eb7daf133a515334c1672.NginxMailingListRussian@forum.nginx.org> Просто нет слов, прошу прощение за глупость и спасибо огромное. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251860,251874#msg-251874 From mdounin at mdounin.ru Thu Jul 17 10:58:30 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Thu, 17 Jul 2014 14:58:30 +0400 Subject: =?UTF-8?B?UmU6IHN1YnMgZmlsdGVyINC/0L7QtCB3aW5kb3dz?= In-Reply-To: <80a638dff46d6627812715353c006bba.NginxMailingListRussian@forum.nginx.org> References: <80a638dff46d6627812715353c006bba.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140717105830.GU1849@mdounin.ru> Hello! On Thu, Jul 17, 2014 at 01:40:25AM -0400, helgen09 wrote: > Мой вопрос наверное глупый, но ответа на него я пока не нашел, подскажите > есть ли модуль nginx subs_filter под windows и как его подключить, иначе > nginx выдает ошибку unknown directive "subs_filter". Инструкция по самостоятельной сборке nginx'а под Windows - тут: http://nginx.org/en/docs/howto_build_on_win32.html Упомянутый сторонний модуль - вроде как достаточно простой, чтобы собраться без проблем. -- Maxim Dounin http://nginx.org/ From rogat1y at gmail.com Thu Jul 17 11:24:17 2014 From: rogat1y at gmail.com (Maxim Kozlov) Date: Thu, 17 Jul 2014 15:24:17 +0400 Subject: =?UTF-8?B?UmU6IHN1Yl9maWx0ZXIg0Lgg0YHQuNC80LLQvtC7ICY=?= In-Reply-To: <1971580.nHXtfMsVeU@vbart-workstation> References: <1971580.nHXtfMsVeU@vbart-workstation> Message-ID: Печаль =( Спасибо. 17 июля 2014 г., 13:55 пользователь Валентин Бартенев написал: > On Thursday 17 July 2014 13:06:44 Maxim Kozlov wrote: > > Всем привет. > > > > необходимо заменять в ответе символы & на & > > > > location ~(.*)/page.html { > > sub_filter & '&'; > > sub_filter_once off; > > } > > но такой конфиг не срабатывает. > > > > А вот такой конфиг > > location ~(.*)/page.html { > > sub_filter &foo '&foo'; > > sub_filter_once off; > > } > > отрабатывает правильно. > > > > Я так понимаю надо символ & как-то экранировать в конфиге? > > > > Просто алгоритм sub_filter не умеет искать отдельные символы. > Минимальный размер строки для поиска сейчас - два символа. > > -- > Валентин Бартенев > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -------------- next part -------------- An HTML attachment was scrubbed... URL: From gmm at csdoc.com Thu Jul 17 11:35:49 2014 From: gmm at csdoc.com (Gena Makhomed) Date: Thu, 17 Jul 2014 14:35:49 +0300 Subject: Cache revalidation using If-None-Match In-Reply-To: <6b293936477579272861ef736d7b988a.NginxMailingListRussian@forum.nginx.org> References: <20140715225203.GG1849@mdounin.ru> <6b293936477579272861ef736d7b988a.NginxMailingListRussian@forum.nginx.org> Message-ID: <53C7B515.5020505@csdoc.com> On 16.07.2014 3:09, S.A.N wrote: >> Если я правильно понял этот поток текста, то на выходе вы хотите >> получить что-то вроде "The stale-if-error Cache-Control >> Extension", http://tools.ietf.org/html/rfc5861#section-4. Т.е. >> возможность задать в заголовках ответа - можно ли этот ответ в >> дальнейшем использовать при ошибках. > > Да, это очень похоже на то что нам надо. > Задача заключается в том, чтобы найти подходящие HTTP заголовки, которые > будут переопределять значения таких директив как: > fastcgi_cache_lock > fastcgi_cache_lock_timeout > fastcgi_cache_use_stale > > Cache-Control: stale-while-revalidate=0 > Этот заголовок можно использовать, чтобы включать и отключать директиву > cache_lock и настраивать cache_lock_timeout. > Если значения stale-while-revalidate равно 0, то для Nginx это должно > означать cache_lock off. > Если значения stale-while-revalidate положительное это должно означать > cache_lock on. > > Само значения stale-while-revalidate, можно использовать как > cache_lock_timeout. > > Cache-Control: stale-if-error=0 > Этот заголовок можно использовать, чтобы отключать директиву > cache_use_stale > Если значения stale-if-error равно 0, то для Nginx это должно означать > cache_use_stale off. > > >> (Планов по реализации соответствующего расширения - по крайней >> мере в ближайшем будущем - нет.) > > Это не срочные работы. > Они будут очень полезны для тех кто хочет управлять кешированием через > бекенд, а не програмить в конфигах Nginx. Есть еще один вариант - попробовать написать этот патч самостоятельно и прислать его на включение в основную ветку nginx, - если повезет, то включат, если не повезет - вам придется поддерживать свой fork. Или - попробовать договориться с Nginx Inc. о спонсировании с вашей стороны добавления этой функциональности в nginx. Примерно таким способом там появилась поддержка SPDY: http://barry.wordpress.com/2012/06/16/nginx-spdy-and-automattic/ http://blog.maxcdn.com/partnering-nginx-automattic-support-spdy3-1/ Если эти запрашиваемые фичи действительно вам нужны/полезны/etc -- Best regards, Gena From mdounin at mdounin.ru Thu Jul 17 11:53:43 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Thu, 17 Jul 2014 15:53:43 +0400 Subject: =?UTF-8?B?UmU6IHN1Yl9maWx0ZXIg0Lgg0YHQuNC80LLQvtC7ICY=?= In-Reply-To: <1971580.nHXtfMsVeU@vbart-workstation> References: <1971580.nHXtfMsVeU@vbart-workstation> Message-ID: <20140717115343.GV1849@mdounin.ru> Hello! On Thu, Jul 17, 2014 at 01:55:58PM +0400, Валентин Бартенев wrote: > On Thursday 17 July 2014 13:06:44 Maxim Kozlov wrote: > > Всем привет. > > > > необходимо заменять в ответе символы & на & > > > > location ~(.*)/page.html { > > sub_filter & '&'; > > sub_filter_once off; > > } > > но такой конфиг не срабатывает. > > > > А вот такой конфиг > > location ~(.*)/page.html { > > sub_filter &foo '&foo'; > > sub_filter_once off; > > } > > отрабатывает правильно. > > > > Я так понимаю надо символ & как-то экранировать в конфиге? > > > > Просто алгоритм sub_filter не умеет искать отдельные символы. > Минимальный размер строки для поиска сейчас - два символа. IMHO, это выглядит как баг и это имеет смысл исправить. Ну или как минимум ругаться, если строка для поиска слишком короткая. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Thu Jul 17 12:17:08 2014 From: nginx-forum at nginx.us (S.A.N) Date: Thu, 17 Jul 2014 08:17:08 -0400 Subject: Cache revalidation using If-None-Match In-Reply-To: <53C792CC.4090700@csdoc.com> References: <53C792CC.4090700@csdoc.com> Message-ID: <14a2228bd049f38f0811f2b7e747c954.NginxMailingListRussian@forum.nginx.org> > Есть один способ: > http://www.lexa.ru/nginx-ru/msg30320.html > > И второй способ: просто не включать кеширование > на стороне nginx в тех location`ах, где оно не нужно. Есть и третий способ if ($upstream_status = 304) { set no_cache = 1; } fastcgi_no_cache $no_cache; Ещё как вариант, Nginx вообще не нужно удалять валидаторы из запроса, они всегда должны уходить на бекенд, при получении статуса 304, когда нет файла кеша Nginx, но в заголовке ответа указано что можно кешировать в публичном кеше (не private), только в этом случаи Nginx должен сделать повторный запрос к бекенду без валидаторов для получения нового контента со статусом 200. Но можно и не делать повторный запрос, со временем придет юзер без валидаторов и бекенд отдаст статус 200, в общем Nginx просто надо научить понимать что заголовки Cache-Control в 304 статусе, не означают что нужно кешировать ответ 304, они означают что нужно использовать прежний закешированый ответ 200, по сути fastcgi_no_cache который я написал выше эту проблему так и решает. Я понимаю такая схема сложней для Nginx и ему проще просто всегда удалять валидаторы если нет файла кеша, но я же смотрю с точки зрения бекенда, ему лучше если валидаторы всегда приходят. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251189,251882#msg-251882 From rogat1y at gmail.com Thu Jul 17 12:34:42 2014 From: rogat1y at gmail.com (Maxim Kozlov) Date: Thu, 17 Jul 2014 16:34:42 +0400 Subject: =?UTF-8?B?UmU6IHN1Yl9maWx0ZXIg0Lgg0YHQuNC80LLQvtC7ICY=?= In-Reply-To: <20140717115343.GV1849@mdounin.ru> References: <1971580.nHXtfMsVeU@vbart-workstation> <20140717115343.GV1849@mdounin.ru> Message-ID: 17 июля 2014 г., 15:53 пользователь Maxim Dounin написал: > Hello! > > On Thu, Jul 17, 2014 at 01:55:58PM +0400, Валентин Бартенев wrote: > > > On Thursday 17 July 2014 13:06:44 Maxim Kozlov wrote: > > > Всем привет. > > > > > > необходимо заменять в ответе символы & на & > > > > > > location ~(.*)/page.html { > > > sub_filter & '&'; > > > sub_filter_once off; > > > } > > > но такой конфиг не срабатывает. > > > > > > А вот такой конфиг > > > location ~(.*)/page.html { > > > sub_filter &foo '&foo'; > > > sub_filter_once off; > > > } > > > отрабатывает правильно. > > > > > > Я так понимаю надо символ & как-то экранировать в конфиге? > > > > > > > Просто алгоритм sub_filter не умеет искать отдельные символы. > > Минимальный размер строки для поиска сейчас - два символа. > > IMHO, это выглядит как баг и это имеет смысл исправить. Ну или > как минимум ругаться, если строка для поиска слишком короткая. > > -- > Maxim Dounin > http://nginx.org/ > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > ну или хотя бы обозначить это в документации -------------- next part -------------- An HTML attachment was scrubbed... URL: From maxim at nginx.com Thu Jul 17 12:43:22 2014 From: maxim at nginx.com (Maxim Konovalov) Date: Thu, 17 Jul 2014 16:43:22 +0400 Subject: =?UTF-8?B?UmU6INCd0LXQvtCx0YXQvtC00LjQvNC+INC40YHQv9GA0LDQstC70LXQvdC40LUg?= =?UTF-8?B?0LIg0LTQvtC60YPQvNC10L3RgtCw0YbQuNC4?= In-Reply-To: <969168994.20140716165724@ngs.ru> References: <969168994.20140716165724@ngs.ru> Message-ID: <53C7C4EA.1080705@nginx.com> On 7/16/14 1:57 PM, Pavel V. wrote: > Здравствуйте, Nginx-ru. > > Просьба исправить в документации http://nginx.org/ru/docs/http/ngx_http_core_module.html#location > абзац: > >> Если location задан префиксной строкой со слэшом в конце и запросы обрабатываются при помощи >> proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass или memcached_pass, а в ответ на запрос с URI равным >> этой строке, но без завершающего слэша, будет возвращено постоянное перенаправление с кодом 301 на >> URI с добавленным в конец слэшом. Если такое поведение нежелательно, можно задать точное совпадение >> URI и location, например: > > видимо, необходимо убрать "а" в "..., а в ответ..." ну и пунктуацию подправить. > > Спасибо. > Спасибо, поправили. -- Maxim Konovalov http://nginx.com From nginx-forum at nginx.us Thu Jul 17 13:46:11 2014 From: nginx-forum at nginx.us (S.A.N) Date: Thu, 17 Jul 2014 09:46:11 -0400 Subject: Cache revalidation using If-None-Match In-Reply-To: <53C79BDC.7040305@csdoc.com> References: <53C79BDC.7040305@csdoc.com> Message-ID: <36b0918cbbf73b104702274a17dc343d.NginxMailingListRussian@forum.nginx.org> > Это у вас тоже layering violation, только уже в другую сторону. Возможно, но в моей практике, нередко были моменты когда что-то описывается в конфиге Nginx, потом что-то меняется в логике бекенда, все уже забыли что там в конфигах Nginx, и получаем диссонанс логики бекенда и Nginx. Если вы посмотрите на причины, из-за которых начинают программировать в конфигах Nginx, то причина одна, бекенд что-то не так делает. Так начинается лечения пациента (бекенда) по симптомам, мы находим условия (location) при котором появляется симптом, в этом location прописываем рецепт (директивы) больному для его выздоровления. Симптомы исчезают, мы радуемся что решили проблему, но мы просто сняли симптом, причина была в бекенде. По этому я сторонник делать все на бекенде. > У варианта использования phpd разве есть какие-то преимущества > по сравнению с вариантом nginx+php-fpm, если связь между nginx > и php-fpm делать через unix domain socket ? > подробнее - см. http://php-fpm.org/about/ > тем более, что phpd уже deprecated Я не знаю, про какой phpd вы говорите, у нас своя разработка, которая совсем не deprecated, скорей на оборот, слишком модная ) Преимущества по сравнению с php-fpm в основном два, это возможность в runtime сохранять своё состояния и нужные данные между запросами и отсутствия издержек на инициализацию скриптов при каждом запросе, как это всегда происходит в fpm, конечно OPcache помогает, но в демоне все равно быстрей. В качестве веб-сервера используется PHP модуль Event (libenet 2.0) http://ua2.php.net/manual/ru/book.event.php Очень довольны его скоростью и стабильностью. Проводили нагрузочное тестирования и сравнивали fpm и наш демон, разница оказывалась в разы, в пользу демона. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251189,251885#msg-251885 From gmm at csdoc.com Thu Jul 17 18:07:32 2014 From: gmm at csdoc.com (Gena Makhomed) Date: Thu, 17 Jul 2014 21:07:32 +0300 Subject: Cache revalidation using If-None-Match In-Reply-To: <14a2228bd049f38f0811f2b7e747c954.NginxMailingListRussian@forum.nginx.org> References: <53C792CC.4090700@csdoc.com> <14a2228bd049f38f0811f2b7e747c954.NginxMailingListRussian@forum.nginx.org> Message-ID: <53C810E4.9040705@csdoc.com> On 17.07.2014 15:17, S.A.N wrote: > if ($upstream_status = 304) { > set no_cache = 1; > } > > fastcgi_no_cache $no_cache; > > Ещё как вариант, Nginx вообще не нужно удалять валидаторы из запроса, они > всегда должны уходить на бекенд, при получении статуса 304, когда нет файла > кеша Nginx, но в заголовке ответа указано что можно кешировать в публичном > кеше (не private), только в этом случаи Nginx должен сделать повторный > запрос к бекенду без валидаторов для получения нового контента со статусом > 200. Обычно nginx ставят для того, чтобы он уменьшал, а не увеличивал количество запросов к backend`у. > Но можно и не делать повторный запрос, со временем придет юзер без > валидаторов и бекенд отдаст статус 200, в общем Nginx просто надо научить > понимать что заголовки Cache-Control в 304 статусе, не означают что нужно > кешировать ответ 304, они означают что нужно использовать прежний > закешированый ответ 200, по сути fastcgi_no_cache который я написал выше эту > проблему так и решает. Запрос с валидаторами может придти и тогда, когда в кеше nginx предыдущего варианта ответа уже нет. И тогда на backend пойдет весь поток таких запросов с валидаторами, на которые backend будет вынужден каждый раз сам отвечать 304 статусом. В существующем сейчас варианте - на backend приходит всего один запрос. Что меньше, чем количество запросов как в первом так и во втором случае. > Я понимаю такая схема сложней для Nginx и ему проще просто всегда удалять > валидаторы если нет файла кеша, но я же смотрю с точки зрения бекенда, ему > лучше если валидаторы всегда приходят. Если посмотреть на ситуацию с точки зрения производительности - то лучше не дергать backend на каждый клиентский запрос, а просто делегировать nginx`у полномочия по возврату статуса 304 в ответ на такие запросы клиентов. Когда backend понимает, что кеш у nginx устарел - он обновляет кеш nginx всего одним запросом. А в коммерческой версии - там еще лучше, одним запросом удаляет из кеша устаревший ответ, если он там есть. Или просто использовать вариант с естественным устареванием кеша по таймауту fastcgi_cache_valid В результате: минимальный overhead, максимальная производительность. -- Best regards, Gena From gmm at csdoc.com Thu Jul 17 18:44:35 2014 From: gmm at csdoc.com (Gena Makhomed) Date: Thu, 17 Jul 2014 21:44:35 +0300 Subject: Cache revalidation using If-None-Match In-Reply-To: <36b0918cbbf73b104702274a17dc343d.NginxMailingListRussian@forum.nginx.org> References: <53C79BDC.7040305@csdoc.com> <36b0918cbbf73b104702274a17dc343d.NginxMailingListRussian@forum.nginx.org> Message-ID: <53C81993.5000405@csdoc.com> On 17.07.2014 16:46, S.A.N wrote: > Если вы посмотрите на причины, из-за которых начинают программировать > в конфигах Nginx, то причина одна, бекенд что-то не так делает. "бекенд что-то не так делает" - это уже следствия. А причина в том, что большинство приложений на PHP написаны изначально из расчета, что они будут запускаться на Apache + mod_php. В результате чего сами разработчики этих приложений часть логики вынесли в файлы .htaccess > Так начинается лечения пациента (бекенда) по симптомам, мы находим условия > (location) при котором появляется симптом, в этом location прописываем > рецепт (директивы) больному для его выздоровления. > Симптомы исчезают, мы радуемся что решили проблему, но мы просто сняли > симптом, причина была в бекенде. Причина в бекенде, да. Но переписать весь софт "правильно" - не хватит времени и сил. Например, вот та же MediaWiki. В результате приходится делать так http://www.mediawiki.org/wiki/Manual:Short_URL/wiki/Page_title_--_nginx_rewrite--root_access или так: http://wiki.nginx.org/MediaWiki Если приложение писали не для Apache, а изначально планируя его запускать на nginx+php-fpm, то там будет, грубо говоря всего две точки входа - одна для динамики и вторая для статики, плюс location для обработки 404 ошибок к статике. И ничего "программировать" в конфиге не надо. > По этому я сторонник делать все на бекенде. Если все делать на бекенде - тогда вам nginx просто не нужен. Оптимальный вариант - это все-таки делать на стороне nginx то, что он умеет делать лучше всего (SSL, gzip, кеширование, отдача статики) а на стороне backend`а - только генерирование контента для динамики. >> У варианта использования phpd разве есть какие-то преимущества >> по сравнению с вариантом nginx+php-fpm, если связь между nginx >> и php-fpm делать через unix domain socket ? >> подробнее - см. http://php-fpm.org/about/ >> тем более, что phpd уже deprecated > > Я не знаю, про какой phpd вы говорите, у нас своя разработка, которая совсем > не deprecated, скорей на оборот, слишком модная ) > Преимущества по сравнению с php-fpm в основном два, это возможность в > runtime сохранять своё состояния и нужные данные между запросами и > отсутствия издержек на инициализацию скриптов при каждом запросе, как это > всегда происходит в fpm, конечно OPcache помогает, но в демоне все равно > быстрей. > > В качестве веб-сервера используется PHP модуль Event (libenet 2.0) > http://ua2.php.net/manual/ru/book.event.php > > Очень довольны его скоростью и стабильностью. > Проводили нагрузочное тестирования и сравнивали fpm и наш демон, разница > оказывалась в разы, в пользу демона. И он даже быстрее, чем https://github.com/kakserpom/phpdaemon ? Выложить свой phpd в open source не планируете? -- Best regards, Gena From nginx-forum at nginx.us Thu Jul 17 20:48:00 2014 From: nginx-forum at nginx.us (S.A.N) Date: Thu, 17 Jul 2014 16:48:00 -0400 Subject: Cache revalidation using If-None-Match In-Reply-To: <53C810E4.9040705@csdoc.com> References: <53C810E4.9040705@csdoc.com> Message-ID: <7a759201df2bae5d79d8faeb3a244d34.NginxMailingListRussian@forum.nginx.org> > В результате: минимальный overhead, максимальная производительность. В целом я с вами согласен. С удалением валидаторов, можно мирится, ради производительности. Так же можно настроить в конфиге все нужные location в которых нужно выключать кеширования, я тоже знаю как это делать. Просто мне интересно как можно решить эту проблему по другому. Я люблю играть в шахматы, игра учит находит выходы из ситуаций, которые выглядят как 100% мат, но выход как правило есть. Если кто-то придумает, лучшее решения этой проблемы (без location и no_cache), тогда напишите, мне будет интересно узнать. Если нет, тогда не вижу смысла эту тему обсуждать по кругу, она просто того не стоит. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251189,251890#msg-251890 From nginx-forum at nginx.us Thu Jul 17 22:23:03 2014 From: nginx-forum at nginx.us (S.A.N) Date: Thu, 17 Jul 2014 18:23:03 -0400 Subject: Cache revalidation using If-None-Match In-Reply-To: <53C81993.5000405@csdoc.com> References: <53C81993.5000405@csdoc.com> Message-ID: <5cb3b0e63cd49ad1965613fff3e496d6.NginxMailingListRussian@forum.nginx.org> > Причина в бекенде, да. Но переписать весь софт "правильно" > - не хватит времени и сил. Например, вот та же MediaWiki. Кстати MediaWiki, использует переменую $_SERVER['HTTP_HOST'] без всякой проверки. Если вы используете MediaWiki, советую поискать в коде $_SERVER['HTTP_HOST'] и изучить степень угрозы. > Если все делать на бекенде - тогда вам nginx просто не нужен. У нас изначально РНР фрейворк проектировался как REST приложения, в нем очень приятно реализовывать логику на уровне HTTP. По этому мне привычней и удобней это делать имино на бекенде. Наверно ваше мнения было таким же, если вместо MediaWiki, вы использовали что-то более подходящее на роль REST приложения. Я ничего не имею против MediaWiki но именно из-за таких фрейморков удобней что-то дописать в конфиге вебсервера, вместо реализации этой логики на уровне HTTP протокола, в самом приложении, что дает возможность понимать вашу логику приложения, всем кто понимает HTTP заголовки. > Оптимальный вариант - это все-таки делать на стороне nginx то, что > он умеет делать лучше всего (SSL, gzip, кеширование, отдача статики) > а на стороне backend`а - только генерирование контента для динамики. Мы со временем пришли к тому что и контент сжимаем в gzip, сразу на бекенде. Если есть Nginx кеширования, такая схема работает намного эффективней. Папка кеша занимает меньше места, считывания происходит быстрей, Nginx не тратит проц время на сжатия. Главное не забыть включить gunzip, он нужен для клиентов которые не понимают gzip, для них Nginx отдаст несжатый ответ, таких клиентов мало, 10% - 15%. Таким образом мы один раз сжали ответ на бекенде, потеряли там 2-5ms времени, но Nginx будет сотни раз отдавать этот ответ из своего кеша, таким образом мы сэкономили в сотни раз больше процессорного времени и в несколько раз сэкономили место на диске под файл кеша. > И он даже быстрее, чем https://github.com/kakserpom/phpdaemon ? PhpDaemon - это не лучший пример, в плане производительности, он слишком универсален и тяжелый. На роль, легкого простого демона, он не подходит однозначно, но сам проект вызывает уважения и многие вещи нами были подсмотрены и сделаны по своему. В это плане, более интересный ReactPHP. Вот не плохая статья на русском. http://habrahabr.ru/post/220393/ > Выложить свой phpd в open source не планируете? Это зависит не только от меня, сейчас в планах этого нет. Даже моё желания написать статью про ревалидацию кеша через ETag, и отдать ответ c 304 статусе и уложится за 5ms, мои колеги встретили неоднозначно, некоторые даже посчитали что это нарушает их автор право, но принципиально особо никто не против. Если хотите проверить на что способен, PHP модуль Event, можете создать простой скрипт, который будет что-то отдавать на HTTP запрос. В самом модуле есть простой встроенный вебсервер, его вполне достаточно, чтобы потестить в ab. Я был приятно удивлен, но в простом синтетик тесте, который выдаёт строку Ok, этот модуль оказался быстрей встроенного net/http который используется в Golang. bind('0.0.0.0', 8080); $http->setDefaultCallback('App\responseHTTP'); $base->loop(); ?> Ваша функция App\responseHTTP, принимает объект request и отдает через него заголовки и тело ответа. Скрипт работает в одном потоке, Libevent сам держит пул конектов и асинхроно отвечает. РНР просто синхроно, обрабатывает запросы один за другим, на один простой запрос уходит 2-7 ms. Очень советую, надеюсь РНР будет развиватся в этом направлении, и когда-то мы получим ApplicationServer из коробки, который будет работать действительно на FastCGI модели. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251189,251891#msg-251891 From nginx-forum at nginx.us Fri Jul 18 01:16:49 2014 From: nginx-forum at nginx.us (Klim81) Date: Thu, 17 Jul 2014 21:16:49 -0400 Subject: rtfm Message-ID: сервер стандартный сервисы стандартные. всё как обычно 80 порт. одно но, домен в другом месте и оттуда адрессация на сервер. около 10 адресов, но из них работает лишь часть. если к примеру есть несколько examaple1.com site2.com то работать будет лишь один, остальные не будут работать. с адресацией на www нет проблем, все отрабатывают нормально. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251892,251892#msg-251892 From nginx-forum at nginx.us Fri Jul 18 06:52:49 2014 From: nginx-forum at nginx.us (No1) Date: Fri, 18 Jul 2014 02:52:49 -0400 Subject: =?UTF-8?B?TWFwINGA0LDQsdC+0YLQsCDQsiDQvdC10YHQutC+0LvRjNC60LjRhSB2aG9zdHM=?= Message-ID: <99b60b9352bae1745650c0bf7d19fdd3.NginxMailingListRussian@forum.nginx.org> Есть простая конструкция в секций http: map $uri$1 $new { include /usr/local/etc/nginx/redirect.conf; } Добавлено несколько vhosts,на одном из них редиректы работают,а на втором отказываются. В чем проблема может быть? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251894,251894#msg-251894 From nginx-forum at nginx.us Fri Jul 18 07:58:36 2014 From: nginx-forum at nginx.us (Budulianin) Date: Fri, 18 Jul 2014 03:58:36 -0400 Subject: =?UTF-8?B?0KfQuNGB0YLQutCwINC60Y3RiNCwIG5naW54Lg==?= Message-ID: <1a1354736ff769e369373d51b794208c.NginxMailingListRussian@forum.nginx.org> Всем привет. Подскажите пожалуйста, будет ли как-то влиять на nginx, исчезновение кэша? Я собираюсь иногда чистить его самостоятельно, никаких проблем не должно возникнуть? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251895,251895#msg-251895 From gmm at csdoc.com Fri Jul 18 11:14:45 2014 From: gmm at csdoc.com (Gena Makhomed) Date: Fri, 18 Jul 2014 14:14:45 +0300 Subject: Cache revalidation using If-None-Match In-Reply-To: <5cb3b0e63cd49ad1965613fff3e496d6.NginxMailingListRussian@forum.nginx.org> References: <53C81993.5000405@csdoc.com> <5cb3b0e63cd49ad1965613fff3e496d6.NginxMailingListRussian@forum.nginx.org> Message-ID: <53C901A5.1030503@csdoc.com> On 18.07.2014 1:23, S.A.N wrote: >> Причина в бекенде, да. Но переписать весь софт "правильно" >> - не хватит времени и сил. Например, вот та же MediaWiki. > > Кстати MediaWiki, использует переменую $_SERVER['HTTP_HOST'] без всякой > проверки. > Если вы используете MediaWiki, советую поискать в коде $_SERVER['HTTP_HOST'] > и изучить степень угрозы. В качестве workaround`а я обычно использую двойное проксирование, nginx -> nginx -> php-fpm, так что nginx в результате сам исправляет этот глюк с HTTP_HOST, на все невалидные запросы отвечая 400 статусом. Правда, чтобы он вел себя в полном соответсвии с требованиями RFC: http://tools.ietf.org/html/rfc2616#section-5.2 If the host as determined by rule 1 or 2 is not a valid host on the server, the response MUST be a 400 (Bad Request) error message. - его приходится специально настраивать для этого, "из коробки" он с требованиями RFC не совместим. >> Если все делать на бекенде - тогда вам nginx просто не нужен. > > У нас изначально РНР фрейворк проектировался как REST приложения, в нем > очень приятно реализовывать логику на уровне HTTP. > > По этому мне привычней и удобней это делать имино на бекенде. > Наверно ваше мнения было таким же, если вместо MediaWiki, вы использовали > что-то более подходящее на роль REST приложения. MediaWiki приходится использовать, потому что это на сегодня есть наиболее удобный для пользователя движок wiki, - killer app и все такое. > Я ничего не имею против MediaWiki но именно из-за таких фрейморков удобней > что-то дописать в конфиге вебсервера, вместо реализации этой логики на > уровне HTTP протокола, в самом приложении, что дает возможность понимать > вашу логику приложения, всем кто понимает HTTP заголовки. Таких приложений, как MediaWiki - подавляющее большинство на сегодня. Например, WordPress не далеко ушел в этом плане от MediaWiki: http://codex.wordpress.org/Nginx http://wiki.nginx.org/WordPress >> Оптимальный вариант - это все-таки делать на стороне nginx то, что >> он умеет делать лучше всего (SSL, gzip, кеширование, отдача статики) >> а на стороне backend`а - только генерирование контента для динамики. > > Мы со временем пришли к тому что и контент сжимаем в gzip, сразу на > бекенде. > Если есть Nginx кеширования, такая схема работает намного эффективней. > Папка кеша занимает меньше места, считывания происходит быстрей, Nginx не > тратит проц время на сжатия. да и SSD изнашивается не так быстро, если кеш nginx размещен на SSD. > Главное не забыть включить gunzip, он нужен для клиентов которые не понимают > gzip, для них Nginx отдаст несжатый ответ, таких клиентов мало, 10% - 15%. > > Таким образом мы один раз сжали ответ на бекенде, потеряли там 2-5ms > времени, но Nginx будет сотни раз отдавать этот ответ из своего кеша, таким > образом мы сэкономили в сотни раз больше процессорного времени и в несколько > раз сэкономили место на диске под файл кеша. Да, прекрасно понимаю. Для этих/похожих целей в nginx есть ngx_http_gzip_static_module и ngx_http_gunzip_module. Хотя имхо идеальным вариантом было бы все-таки, если бы nginx сам умел сжимать ответ от backend`а перед помещением его в свой кеш. > Даже моё желания написать статью про ревалидацию кеша через ETag, и отдать > ответ c 304 статусе и уложится за 5ms, мои колеги встретили неоднозначно, > некоторые даже посчитали что это нарушает их автор право, но принципиально > особо никто не против. Всеравно nginx отдаст 304 ответ из своего кеша еще быстрее, чем веб-приложение на которое он проксирует запросы клиентов. > > $base = new EventBase(); > $http = new EventHttp($base); > > $http->bind('0.0.0.0', 8080); > $http->setDefaultCallback('App\responseHTTP'); > > $base->loop(); > > ?> > > Ваша функция App\responseHTTP, принимает объект request и отдает через него > заголовки и тело ответа. > Скрипт работает в одном потоке, Libevent сам держит пул конектов и асинхроно > отвечает. > РНР просто синхроно, обрабатывает запросы один за другим, на один простой > запрос уходит 2-7 ms. > Очень советую, надеюсь РНР будет развиватся в этом направлении, и когда-то > мы получим ApplicationServer из коробки, который будет работать > действительно на FastCGI модели. У этого подхода есть и минусы. Утечки памяти будут накапливаться, и малейшая ошибка в коде будет приводить к краху всего веб-сервера. По этим граблям народ уже основательно прошелся, используя node.js Да и со сборкой мусора у PHP не очень хорошо, по сравнению с Java. Если уж использовать такую модель - имхо лучше это делать на Java или другом языке, который запускается поверх JVM. В других языках (интерпретаторах/компиляторах) сейчас только пытаются повторить то, что было в Java сделано уже 10-15 лет тому назад и отлично работает. Да и язык программирования Java сам по себе - просто отличный язык, не смотря на некоторые небольшие недостатки в библиотеках и синтаксисе. -- Best regards, Gena From nginx-forum at nginx.us Fri Jul 18 13:37:41 2014 From: nginx-forum at nginx.us (Budulianin) Date: Fri, 18 Jul 2014 09:37:41 -0400 Subject: =?UTF-8?B?UmU6INCn0LjRgdGC0LrQsCDQutGN0YjQsCBuZ2lueC4=?= In-Reply-To: <1a1354736ff769e369373d51b794208c.NginxMailingListRussian@forum.nginx.org> References: <1a1354736ff769e369373d51b794208c.NginxMailingListRussian@forum.nginx.org> Message-ID: Я читал, что можно чистить кэш самостоятельно, но это были старые записи, например: http://forum.nginx.org/read.php?2,2600,2602#msg-2602 В последних версиях, это не приносит никаких проблем? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251895,251907#msg-251907 From nginx-forum at nginx.us Fri Jul 18 14:48:22 2014 From: nginx-forum at nginx.us (S.A.N) Date: Fri, 18 Jul 2014 10:48:22 -0400 Subject: =?UTF-8?B?UmU6INCn0LjRgdGC0LrQsCDQutGN0YjQsCBuZ2lueC4=?= In-Reply-To: <1a1354736ff769e369373d51b794208c.NginxMailingListRussian@forum.nginx.org> References: <1a1354736ff769e369373d51b794208c.NginxMailingListRussian@forum.nginx.org> Message-ID: > Я собираюсь иногда чистить его самостоятельно, никаких проблем не > должно возникнуть? Скорей всего всё будет без проблем. Проблемы будут если вы начнете редактировать файлы кеша, особенно в новых версиях Nginx. Например если в кеше отредактировать значения ETag, сделать запрос, Nginx уходит в аут, я так и не смог дождаться его ответа ) Кстати советую для удобства разработки, выводить заголовок в котором будет указываться состояния кеша в момент ответа add_header X-Cache-Status $upstream_cache_status; Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251895,251913#msg-251913 From mdounin at mdounin.ru Fri Jul 18 14:56:13 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Fri, 18 Jul 2014 18:56:13 +0400 Subject: =?UTF-8?B?UmU6IE1hcCDRgNCw0LHQvtGC0LAg0LIg0L3QtdGB0LrQvtC70YzQutC40YUgdmhv?= =?UTF-8?B?c3Rz?= In-Reply-To: <99b60b9352bae1745650c0bf7d19fdd3.NginxMailingListRussian@forum.nginx.org> References: <99b60b9352bae1745650c0bf7d19fdd3.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140718145613.GG1849@mdounin.ru> Hello! On Fri, Jul 18, 2014 at 02:52:49AM -0400, No1 wrote: > Есть простая конструкция в секций http: > map $uri$1 $new { > include /usr/local/etc/nginx/redirect.conf; > } > > Добавлено несколько vhosts,на одном из них редиректы работают,а на втором > отказываются. > В чем проблема может быть? Map - это просто таблица. Чтобы что-то происходило - эту таблицу ещё надо как-то использовать. В данном случае, впрочем, я вижу как минимум одну проблему непосредственно в описании map'а - исходное значение "$uri$1" содержит ссылку на позиционное выделение из последнего выполненного регулярного выражения, что является очень ненадёжным решением. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Fri Jul 18 17:01:11 2014 From: nginx-forum at nginx.us (S.A.N) Date: Fri, 18 Jul 2014 13:01:11 -0400 Subject: Cache revalidation using If-None-Match In-Reply-To: <53C901A5.1030503@csdoc.com> References: <53C901A5.1030503@csdoc.com> Message-ID: > Всеравно nginx отдаст 304 ответ из своего кеша еще быстрее, > чем веб-приложение на которое он проксирует запросы клиентов. Да, конечно. Но вы не сможете постоянно хранить ответы в кеше, их придется когда-то ревалидировать. Я долгое время не понимал, необходимости в ревалидации, считал это лишним, проще через время отдать новый контент. Для проектов у которых есть высокая доля повторных запросов - ревалидация не очень нужна. Там все просто, условно говоря, есть 100 000 запросов в час, они все приходят на 100 разных uri. В результате мы получаем за короткое время много запросов на одни и те же uri. Это отличный сценарий чтобы просто включить кеширования, например на mag-age=60, и включить блокировку на обновления. Тогда можно не ревалидировать кеш, на бекенд будет приходить мало запросов (средний RPS не высокий). Но, есть и другие проекты, в которых совсем другая картина, там все на оборот, мало повторных запросов и очень много уникал запросов. Если включить кеш даже на mag-age=3600, кеш просто не будет доживать до следующего запроса. Это не значит что посещаемость сайта низкая, просто большинство запросов приходят на уникал uri. Например каталог товаров магазина, все люди ходят по разным товарам, на сайт заходят из поисковиков или других сайтов по ссылке на конкретный товар. Условно говоря, 100 000 запросов в час, приходят на 90 000 уникал uri, такая картина постоянно. Всего в магазине 1000 000 уникал uri, не сложно подсчитать, что повторные запросы будут, но где-то раз в сутки и позже. В таком случаи, есть два варианта поставить mag-age=10000+, или включить ревалидацию. Первый вариант подходит только для архивных данных. Для магазина больше подходит вариант с ревалидацией. Если ревалидация занимает примерно столько же времени, как генерация новой страницы, толку от такого кеширования будет очень мало. По этому, нужно проводить ревалидацию очень быстро. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251189,251922#msg-251922 From mdounin at mdounin.ru Fri Jul 18 17:15:23 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Fri, 18 Jul 2014 21:15:23 +0400 Subject: rtfm In-Reply-To: References: Message-ID: <20140718171522.GM1849@mdounin.ru> Hello! On Thu, Jul 17, 2014 at 09:16:49PM -0400, Klim81 wrote: > сервер стандартный сервисы стандартные. > всё как обычно 80 порт. > одно но, домен в другом месте и оттуда адрессация на сервер. > около 10 адресов, но из них работает лишь часть. > если к примеру есть несколько examaple1.com site2.com то работать будет лишь > один, остальные не будут работать. с адресацией на www нет проблем, все > отрабатывают нормально. Если вы хотели что-то спросить - то, вероятно, имеет смысл спросить. На всякий случай скажу, что документация, упомянутая в теле сообщения, доступна тут: http://nginx.org/ru/docs/ -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Fri Jul 18 18:07:26 2014 From: nginx-forum at nginx.us (Budulianin) Date: Fri, 18 Jul 2014 14:07:26 -0400 Subject: =?UTF-8?B?UmU6INCn0LjRgdGC0LrQsCDQutGN0YjQsCBuZ2lueC4=?= In-Reply-To: References: <1a1354736ff769e369373d51b794208c.NginxMailingListRussian@forum.nginx.org> Message-ID: <4af3ac9cffca36713e2f1d64cd51269f.NginxMailingListRussian@forum.nginx.org> >Скорей всего всё будет без проблем. Хотелось бы уверенного ответа разработчиков, а то нечем будет аргументировать, перед тим лидом) >add_header X-Cache-Status $upstream_cache_status; >Статус может быть одним из ?MISS?, ?BYPASS?, ?EXPIRED?, ?STALE?, ?UPDATING?, ?REVALIDATED? или ?HIT?. Эти заголовки будут содержаться в закэшированном ответе, но как они могут мне помочь? Спасибо за очередной ответ. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251895,251926#msg-251926 From nginx-forum at nginx.us Fri Jul 18 18:12:55 2014 From: nginx-forum at nginx.us (S.A.N) Date: Fri, 18 Jul 2014 14:12:55 -0400 Subject: =?UTF-8?B?UmU6INCn0LjRgdGC0LrQsCDQutGN0YjQsCBuZ2lueC4=?= In-Reply-To: <4af3ac9cffca36713e2f1d64cd51269f.NginxMailingListRussian@forum.nginx.org> References: <1a1354736ff769e369373d51b794208c.NginxMailingListRussian@forum.nginx.org> <4af3ac9cffca36713e2f1d64cd51269f.NginxMailingListRussian@forum.nginx.org> Message-ID: > Эти заголовки будут содержаться в закэшированном ответе, но как они > могут мне помочь? Нет, эти заголовки не попадают в файл кеша Nginx. Заголовки пойдут в браузер, вы сможете их посмотреть в браузере и точно знать, состояния файла кеша. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251895,251927#msg-251927 From nginx-forum at nginx.us Fri Jul 18 21:20:36 2014 From: nginx-forum at nginx.us (Budulianin) Date: Fri, 18 Jul 2014 17:20:36 -0400 Subject: =?UTF-8?B?UmU6INCn0LjRgdGC0LrQsCDQutGN0YjQsCBuZ2lueC4=?= In-Reply-To: References: <1a1354736ff769e369373d51b794208c.NginxMailingListRussian@forum.nginx.org> <4af3ac9cffca36713e2f1d64cd51269f.NginxMailingListRussian@forum.nginx.org> Message-ID: <81e3a68f26acbafaf0e8d6f4b202f78c.NginxMailingListRussian@forum.nginx.org> >Нет, эти заголовки не попадают в файл кеша Nginx. Да, точно. Всегда их включать? Они так постоянно будут уходить к клиенту. Или только, когда нужно, добавлять в конфиг. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251895,251929#msg-251929 From nginx-forum at nginx.us Fri Jul 18 21:50:30 2014 From: nginx-forum at nginx.us (S.A.N) Date: Fri, 18 Jul 2014 17:50:30 -0400 Subject: =?UTF-8?B?UmU6INCn0LjRgdGC0LrQsCDQutGN0YjQsCBuZ2lueC4=?= In-Reply-To: <81e3a68f26acbafaf0e8d6f4b202f78c.NginxMailingListRussian@forum.nginx.org> References: <1a1354736ff769e369373d51b794208c.NginxMailingListRussian@forum.nginx.org> <4af3ac9cffca36713e2f1d64cd51269f.NginxMailingListRussian@forum.nginx.org> <81e3a68f26acbafaf0e8d6f4b202f78c.NginxMailingListRussian@forum.nginx.org> Message-ID: > Всегда их включать? Они так постоянно будут уходить к клиенту. > Или только, когда нужно, добавлять в конфиг. Включать всегда их не нужно. Включать нужно только на стадии разработки, для удобства дебага. Так удобней и не придется заглядывать в логи Nginx и в логи приложения, чтобы определить откуда пришел ответ, от приложения или из кеша Nginx. Если в заголовке X-Cache-Status, будет значения: HIT, значит Nginx не обращался к вашему приложению, а отдал ответ из своего кеша. Полный список значений: ?MISS?, ?BYPASS?, ?EXPIRED?, ?STALE?, ?UPDATING?, ?REVALIDATED?, ?HIT?, надеюсь их смысл понятен. Возможно вам будет интересно, что в платной версии Nginx есть удобное управления кешем, вот ссылка. http://nginx.com/products/content-caching-nginx-plus/ Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251895,251930#msg-251930 From nginx-forum at nginx.us Mon Jul 21 08:43:04 2014 From: nginx-forum at nginx.us (No1) Date: Mon, 21 Jul 2014 04:43:04 -0400 Subject: =?UTF-8?B?UmU6IE1hcCDRgNCw0LHQvtGC0LAg0LIg0L3QtdGB0LrQvtC70YzQutC40YUgdmhv?= =?UTF-8?B?c3Rz?= In-Reply-To: <20140718145613.GG1849@mdounin.ru> References: <20140718145613.GG1849@mdounin.ru> Message-ID: <2401311b29f03e05d6a67bfeb7574339.NginxMailingListRussian@forum.nginx.org> Да,перечитал вики,сделал правильно.Это я делал для тестирования,не понимая как это будет работать,$uri$1 надеясь,что,для моего случая - перенаправление будет работать и с / и без / Т.е /img/ ведет к newimg/,а img не ведет к newimg/ Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251894,251956#msg-251956 From vbart at nginx.com Mon Jul 21 09:39:40 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Mon, 21 Jul 2014 13:39:40 +0400 Subject: =?UTF-8?B?UmU6INCn0LjRgdGC0LrQsCDQutGN0YjQsCBuZ2lueC4=?= In-Reply-To: <4af3ac9cffca36713e2f1d64cd51269f.NginxMailingListRussian@forum.nginx.org> References: <1a1354736ff769e369373d51b794208c.NginxMailingListRussian@forum.nginx.org> <4af3ac9cffca36713e2f1d64cd51269f.NginxMailingListRussian@forum.nginx.org> Message-ID: <1855386.yhimTJULK5@vbart-workstation> On Friday 18 July 2014 14:07:26 Budulianin wrote: > >Скорей всего всё будет без проблем. > Хотелось бы уверенного ответа разработчиков, а то нечем будет > аргументировать, перед тим лидом) > [..] Правильно чистить с помощью PURGE-запросов: http://nginx.org/r/proxy_cache_purge/ru Если вы хотите управлять кэшем из приложения и вам хватало proxy_store, то надо было его и использовать. Непонятно почему отказались. -- Валентин Бартенев From mdounin at mdounin.ru Mon Jul 21 11:49:31 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Mon, 21 Jul 2014 15:49:31 +0400 Subject: =?UTF-8?B?UmU6INCn0LjRgdGC0LrQsCDQutGN0YjQsCBuZ2lueC4=?= In-Reply-To: <1855386.yhimTJULK5@vbart-workstation> References: <1a1354736ff769e369373d51b794208c.NginxMailingListRussian@forum.nginx.org> <4af3ac9cffca36713e2f1d64cd51269f.NginxMailingListRussian@forum.nginx.org> <1855386.yhimTJULK5@vbart-workstation> Message-ID: <20140721114931.GN1849@mdounin.ru> Hello! On Mon, Jul 21, 2014 at 01:39:40PM +0400, Валентин Бартенев wrote: > On Friday 18 July 2014 14:07:26 Budulianin wrote: > > >Скорей всего всё будет без проблем. > > Хотелось бы уверенного ответа разработчиков, а то нечем будет > > аргументировать, перед тим лидом) > > > [..] > > Правильно чистить с помощью PURGE-запросов: > http://nginx.org/r/proxy_cache_purge/ru Правильно, на самом деле, вообще не пытаться чистить кеш. Потому что очистить кеш у пользователей - невозможно. Соответственно попытки заявить, что "вот тут мы очистим кеш фронтенда, и всё будет хорошо" - в большинстве случаев не соответствуют действительности. Потому что хорошо не будет, ибо кеш есть не только на фронтенде, а также и на прокси-серверах и непосредственно у пользователей. Правильный способ проходить через кеш, если такая необходимость возникает - это версионирование в URL'ах. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Tue Jul 22 10:00:43 2014 From: nginx-forum at nginx.us (No1) Date: Tue, 22 Jul 2014 06:00:43 -0400 Subject: =?UTF-8?B?UmU6IE1hcCDRgNCw0LHQvtGC0LAg0LIg0L3QtdGB0LrQvtC70YzQutC40YUgdmhv?= =?UTF-8?B?c3Rz?= In-Reply-To: <99b60b9352bae1745650c0bf7d19fdd3.NginxMailingListRussian@forum.nginx.org> References: <99b60b9352bae1745650c0bf7d19fdd3.NginxMailingListRussian@forum.nginx.org> Message-ID: Добавлено в http секций: map_hash_max_size 4096; map_hash_bucket_size 8192; map $uri $new { include redirect.conf; } В секций vhost'a 1 : if ($new) { return 301 $new; } На vhost 2 так же + добавленно удаление слеша rewrite ^(.+)/$ $1 permanent; На 1 работает все как надо,те ссылки /news/ /news ведут к /new_news На 2 не работает,если добавить к uri / ,поэтому пришлось удалять /. Вид redirect.conf : /news /new_news; /news_1 /new_news_1; Правильное поведение или должно все таки на всех vhost's работать одинаково? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251894,251977#msg-251977 From nginx-forum at nginx.us Tue Jul 22 10:44:55 2014 From: nginx-forum at nginx.us (kay) Date: Tue, 22 Jul 2014 06:44:55 -0400 Subject: =?UTF-8?Q?proxy_read_timeout_=D0=B8_upstream?= Message-ID: <87124b7b6f9054b35f4394d358355240.NginxMailingListRussian@forum.nginx.org> Как настроить nginx считать proxy_read_timeout на все upstream'ы сразу. Т.е. если все upstream'ы отвечают дольше 5-х секунд, а proxy_read_timeout установлен в 4 секунды, то nginx не должен ходить на каждый upstream и опрашивать их. Таким образом, если у нас имеется 3 upstream'а, которые на запрос отвечают по 5 секунд, то nginx один запрос будет обрабатывать 15 секунд и в результате вернет ошибку. Мне хотелось бы, чтобы nginx вернул ошибку сразу по истечении 4-х секунд. Вариант уменьшить proxy_read_timeout до значения "необходимый_таймаут/количество_серверов" не рассматривается, т.к. перезапросы будут проходить слишком часто. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251978,251978#msg-251978 From vbart at nginx.com Tue Jul 22 10:55:46 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Tue, 22 Jul 2014 14:55:46 +0400 Subject: =?UTF-8?Q?Re=3A_proxy_read_timeout_=D0=B8_upstream?= In-Reply-To: <87124b7b6f9054b35f4394d358355240.NginxMailingListRussian@forum.nginx.org> References: <87124b7b6f9054b35f4394d358355240.NginxMailingListRussian@forum.nginx.org> Message-ID: <61135183.HK5vUZ8hix@vbart-workstation> On Tuesday 22 July 2014 06:44:55 kay wrote: > Как настроить nginx считать proxy_read_timeout на все upstream'ы сразу. > > Т.е. если все upstream'ы отвечают дольше 5-х секунд, а proxy_read_timeout > установлен в 4 секунды, то nginx не должен ходить на каждый upstream и > опрашивать их. > > Таким образом, если у нас имеется 3 upstream'а, которые на запрос отвечают > по 5 секунд, то nginx один запрос будет обрабатывать 15 секунд и в > результате вернет ошибку. Мне хотелось бы, чтобы nginx вернул ошибку сразу > по истечении 4-х секунд. > > Вариант уменьшить proxy_read_timeout до значения > "необходимый_таймаут/количество_серверов" не рассматривается, т.к. > перезапросы будут проходить слишком часто. > http://nginx.org/r/proxy_next_upstream/ru -- Валентин Бартенев From vbart at nginx.com Tue Jul 22 11:06:00 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Tue, 22 Jul 2014 15:06 +0400 Subject: =?UTF-8?B?UmU6IE1hcCDRgNCw0LHQvtGC0LAg0LIg0L3QtdGB0LrQvtC70YzQutC40YUgdmhv?= =?UTF-8?B?c3Rz?= In-Reply-To: References: <99b60b9352bae1745650c0bf7d19fdd3.NginxMailingListRussian@forum.nginx.org> Message-ID: <2697133.M8ROALNTYa@vbart-workstation> On Tuesday 22 July 2014 06:00:43 No1 wrote: > Добавлено в http секций: > map_hash_max_size 4096; > map_hash_bucket_size 8192; > > map $uri $new { > include redirect.conf; > } > > В секций vhost'a 1 : > if ($new) { > return 301 $new; > } > На vhost 2 так же + добавленно удаление слеша rewrite ^(.+)/$ $1 permanent; Зачем вы делаете второй редирект, когда вам нужно просто убрать / из адреса для обработки через map? Рекомендуется читать не "вики", а документацию, она вся тут: http://nginx.org/ru/docs/ > На 1 работает все как надо,те ссылки /news/ /news ведут к /new_news > На 2 не работает,если добавить к uri / ,поэтому пришлось удалять /. > > Вид redirect.conf : > /news /new_news; > /news_1 /new_news_1; > > Правильное поведение или должно все таки на всех vhost's работать одинаково? > Поскольку вы опять утаили конфигурацию, то сказать что и почему - не представляется возможным. В одинаковых конфигурациях будет работать одинаково. У вас они, очевидно, разные. По всей видимости, vhost1 у вас также делает редирект на адерс без /, но делает это сам, без вашего явного вмешательства, что также является избыточным. Что и как на самом деле происходит стоит смотреть не в браузере, а более простыми инструментами, вроде netcat или telnet. -- Валентин Бартенев From nginx-forum at nginx.us Tue Jul 22 11:41:22 2014 From: nginx-forum at nginx.us (kay) Date: Tue, 22 Jul 2014 07:41:22 -0400 Subject: =?UTF-8?Q?Re=3A_proxy_read_timeout_=D0=B8_upstream?= In-Reply-To: <61135183.HK5vUZ8hix@vbart-workstation> References: <61135183.HK5vUZ8hix@vbart-workstation> Message-ID: И чем мне это поможет? Если я уберу из proxy_next_upstream timeout, то nginx даже и не попытается отправить запрос на следующий upstream. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251978,251984#msg-251984 From mdounin at mdounin.ru Tue Jul 22 12:06:40 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 22 Jul 2014 16:06:40 +0400 Subject: =?UTF-8?Q?Re=3A_proxy_read_timeout_=D0=B8_upstream?= In-Reply-To: References: <61135183.HK5vUZ8hix@vbart-workstation> Message-ID: <20140722120640.GU1849@mdounin.ru> Hello! On Tue, Jul 22, 2014 at 07:41:22AM -0400, kay wrote: > И чем мне это поможет? Если я уберу из proxy_next_upstream timeout, то nginx > даже и не попытается отправить запрос на следующий upstream. Это решает исходную задачу "настроить nginx считать proxy_read_timeout на все upstream'ы сразу". Повторные попытки при необходимости можно сконфигурировать через error_page 504, см. http://nginx.org/r/error_page/ru. Ходить на несколько upstream-серверов по proxy_next_upstream и при этом отслеживать некий суммарный таймаут nginx сейчас не умеет. Так что следует выбрать что-то одно. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Tue Jul 22 16:02:20 2014 From: nginx-forum at nginx.us (Budulianin) Date: Tue, 22 Jul 2014 12:02:20 -0400 Subject: =?UTF-8?B?UmU6INCn0LjRgdGC0LrQsCDQutGN0YjQsCBuZ2lueC4=?= In-Reply-To: <1855386.yhimTJULK5@vbart-workstation> References: <1855386.yhimTJULK5@vbart-workstation> Message-ID: >Правильно чистить с помощью PURGE-запросов: >http://nginx.org/r/proxy_cache_purge/ru В доке написано, что он платный, это проблема. >Если вы хотите управлять кэшем из приложения и вам хватало proxy_store, >то надо было его и использовать. Непонятно почему отказались Ещё ничего не использовалось, я просто исследовал, что есть в nginx для кэширования. И попробовал uwsgi_store сначала. >очистить кеш у пользователей - невозможно Я понимаю, поэтому буду задавать небольшое время ревалидации для браузерного кэша, чтобы браузер почаще перепроверял кэш nginx. >Потому что хорошо не будет, ибо кеш есть не >только на фронтенде, а также и на прокси-серверах и >непосредственно у пользователей. От nginx будет уходить только Cache-Control и в нём будет небольшое время ревалидации, на nginx больше. Поэтому если я захочу актуализировать кэш у всех пользователей, то мне нужно будет почистить кэш nginx и всё. Логика такая. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251895,251991#msg-251991 From nginx-forum at nginx.us Tue Jul 22 21:37:14 2014 From: nginx-forum at nginx.us (Kradllit) Date: Tue, 22 Jul 2014 17:37:14 -0400 Subject: .htaccess to nginx Message-ID: Здравствуйте. Необходимо перенести сайт с Apache на NGINX, но после переноса на NGINX не открываются страницы. В файле .htaccess находится правило: RewriteEngine on RewriteCond $1 !^(index.php|resources|robots.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA] С помощью онлайн конвертора http://www.anilcetin.com/convert-apache-htaccess-to-nginx/ Получил такой выход: if ($1 !~ "^(index.php|resources|robots.txt)"){ set $rule_0 1$rule_0; } if (!-f $request_filename){ set $rule_0 2$rule_0; } if (!-d $request_filename){ set $rule_0 3$rule_0; } if ($rule_0 = "321"){ rewrite ^/(.*)$ /index.php/$1 last; } Но при обновлении конфигурации получаю ошибку: nginx: [emerg] unknown "1" variable Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251995,251995#msg-251995 From mdounin at mdounin.ru Wed Jul 23 12:03:51 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Wed, 23 Jul 2014 16:03:51 +0400 Subject: .htaccess to nginx In-Reply-To: References: Message-ID: <20140723120351.GE1849@mdounin.ru> Hello! On Tue, Jul 22, 2014 at 05:37:14PM -0400, Kradllit wrote: > Здравствуйте. Необходимо перенести сайт с Apache на NGINX, но после переноса > на NGINX не открываются страницы. > В файле .htaccess находится правило: > > RewriteEngine on > RewriteCond $1 !^(index.php|resources|robots.txt) > RewriteCond %{REQUEST_FILENAME} !-f > RewriteCond %{REQUEST_FILENAME} !-d > RewriteRule ^(.*)$ index.php/$1 [L,QSA] > > С помощью онлайн конвертора > http://www.anilcetin.com/convert-apache-htaccess-to-nginx/ > Получил такой выход: > > if ($1 !~ "^(index.php|resources|robots.txt)"){ > set $rule_0 1$rule_0; > } > if (!-f $request_filename){ > set $rule_0 2$rule_0; > } > if (!-d $request_filename){ > set $rule_0 3$rule_0; > } > if ($rule_0 = "321"){ > rewrite ^/(.*)$ /index.php/$1 last; > } > > > Но при обновлении конфигурации получаю ошибку: > nginx: [emerg] unknown "1" variable Не надо пользоваться "онлайн конверторами" - они делают механическое преобразование и не оборудованы системой понимания того, что они делают. На выходе - в лучшем случае крайне неоптимальный конфиг, в худшем - полный мусор, если задача вышла за те параметры, которым соответствующий конвертер обучен. В данном случае проблема в том, что RewriteCond умеет ссылаться на выделения из rewrite'а, в то время как "онлайн конвертор" про это не знает и специально обрабатывать не умеет. Правильный путь - понять, что делает соответствующее правило с логической точки зрения, и написать то же самое с помощью средств, предоставляемых nginx. http://nginx.org/en/docs/http/converting_rewrite_rules.html -- Maxim Dounin http://nginx.org/ From maxim at nginx.com Thu Jul 24 09:34:10 2014 From: maxim at nginx.com (Maxim Konovalov) Date: Thu, 24 Jul 2014 13:34:10 +0400 Subject: nginx is hiring: QA engineer Message-ID: <53D0D312.6040900@nginx.com> Добрый день. Мы ищем программиста/инженера в отдел QA в компании ООО "Энджиникс" Компания занимается развитием nginx f/oss [1] и созданием коммерческих продуктов на базе nginx [2]. Технический офис в Москве, головной офис в Сан-Франциско, США. Задачи: - развитие системы автоматизированного регрессионного и функционального тестирования для продуктов nginx и nginx-plus [3]; - разработка новых тестов; - развитие системы статического анализа кода; - r&d в области фаззи тестирования. Требования: - хорошие знания perl, знание других скриптовых языков в плюс; - уверенные навыки чтения кода на C, навыки программирования unix/C в плюс; - знание и понимание современных unix архитектур, tcp/ip & networks; - владение командной строкой и основными инструментами разработки для unix-like ОС; - внимательность, усидчивость, коммуникабельность, желание учиться; - технический английский. В обмен на ваше участие предлагаем следующее: - работа в проекте с международным признанием (~40% из top-10K мировых сайтов используют nginx [4]), в компактном коллективе профессионалов, увлеченных своим делом; - профессиональный рост; - апгрейд до разработчика nginx или QA team lead; - конкурентная зарплата, ДМС после исп. срока, гибкий график работы, участие в опционной программе. Варианты с удаленной работой не рассматриваем. Возможны варианты частичной занятости. Жду ваши CV на maxim at nginx.com. [1] http://nginx.org [2] http://nginx.com [3] http://hg.nginx.org/nginx-tests/file/ [4] http://w3techs.com/technologies/cross/web_server/ranking -- Maxim Konovalov http://nginx.com From nginx-forum at nginx.us Thu Jul 24 09:51:14 2014 From: nginx-forum at nginx.us (yanda.a) Date: Thu, 24 Jul 2014 05:51:14 -0400 Subject: =?UTF-8?B?ItCh0YLRgNCw0L3QvdGL0LUiINGC0LDQudC80LDRg9GC0Ysg0L/RgNC4INC/0L4=?= =?UTF-8?B?0LvRg9GH0LXQvdC40Lgg0L7RgtCy0LXRgtCwINC+0YIg0LHQtdC60LXQvdC0?= =?UTF-8?B?0LA=?= Message-ID: Доброго времени суток! С недавних пор стали появляться ошибки upstream timed out (60: Operation timed out) while reading response header from upstream. Что интересно, они появляются только для определенных клиентов, точнее, для определенного клиента - какой-то китайской поисковой системы. Начали разбираться с проблемой и наткнулись на еще одну странность. Логи nginx для неудачного запроса: 2014/07/22 12:35:11 [debug] 63699#0: *200015 http header: "Host: www.example.com" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http header: "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http header: "Accept-Language: zh;q=0.9,en;q=0.8" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http header: "Refer: http://www.example.com/" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http header: "Connection: close" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http header: "Content-Length: 927" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http header: "Content-Type: application/x-www-form-urlencoded" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http header done 2014/07/22 12:35:11 [debug] 63699#0: *200015 generic phase: 0 2014/07/22 12:35:11 [debug] 63699#0: *200015 rewrite phase: 1 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script value: "/usr/home/example/public_html/" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script set $root_path 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script value: "ndcom" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script set $mmc_host 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script value: "1" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script set $count_domain_volume 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script value: "0" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script set $vhost_suspend 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "0" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script value: "1" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script not equal 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script if 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script value: "0" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script set $vhost_suspend 2014/07/22 12:35:11 [debug] 63699#0: *200015 test location: "/" 2014/07/22 12:35:11 [debug] 63699#0: *200015 test location: "robots.txt" 2014/07/22 12:35:11 [debug] 63699#0: *200015 test location: ~ "^.+\.(css|js|ico|gif|png|jpeg|jpg)$" 2014/07/22 12:35:11 [debug] 63699#0: *200015 test location: ~ "^.+\.(zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|mp3|bmp|rtf|dmg|xml)$" 2014/07/22 12:35:11 [debug] 63699#0: *200015 test location: ~ "\.php$" 2014/07/22 12:35:11 [debug] 63699#0: *200015 test location: ~ "/\.(ht[ap]|git)" 2014/07/22 12:35:11 [debug] 63699#0: *200015 using configuration "/" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http cl:927 max:1048576 2014/07/22 12:35:11 [debug] 63699#0: *200015 rewrite phase: 3 2014/07/22 12:35:11 [debug] 63699#0: *200015 post rewrite phase: 4 2014/07/22 12:35:11 [debug] 63699#0: *200015 generic phase: 5 2014/07/22 12:35:11 [debug] 63699#0: *200015 generic phase: 6 2014/07/22 12:35:11 [debug] 63699#0: *200015 generic phase: 7 2014/07/22 12:35:11 [debug] 63699#0: *200015 access phase: 8 2014/07/22 12:35:11 [debug] 63699#0: *200015 access phase: 9 2014/07/22 12:35:11 [debug] 63699#0: *200015 post access phase: 10 2014/07/22 12:35:11 [debug] 63699#0: *200015 try files phase: 11 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "/usr/home/example/public_html/" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "/download/driver/AZTECH+MDP_3858SP-WE.html" 2014/07/22 12:35:11 [debug] 63699#0: *200015 trying to use file: "/download/driver/AZTECH+MDP_3858SP-WE.html" "/usr/home/example/public_html//download/driver/AZTECH+MDP_3858SP-WE.html" 2014/07/22 12:35:11 [debug] 63699#0: *200015 add cleanup: 00000008038913E0 2014/07/22 12:35:11 [debug] 63699#0: *200015 malloc: 0000000803833B80:136 2014/07/22 12:35:11 [debug] 63699#0: *200015 malloc: 0000000803BC3240:71 2014/07/22 12:35:11 [debug] 63699#0: *200015 cached open file: /usr/home/example/public_html//download/driver/AZTECH+MDP_3858SP-WE.html, fd:-1, c:0, e:2, u:1 2014/07/22 12:35:11 [debug] 63699#0: *200015 trying to use file: "@proxy_upstream" "/usr/home/example/public_html/@proxy_upstream" 2014/07/22 12:35:11 [debug] 63699#0: *200015 test location: "@default500" 2014/07/22 12:35:11 [debug] 63699#0: *200015 test location: "@error500" 2014/07/22 12:35:11 [debug] 63699#0: *200015 test location: "@fallback" 2014/07/22 12:35:11 [debug] 63699#0: *200015 test location: "@postDownload" 2014/07/22 12:35:11 [debug] 63699#0: *200015 test location: "@proxy_upstream" 2014/07/22 12:35:11 [debug] 63699#0: *200015 using location: @proxy_upstream "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:35:11 [debug] 63699#0: *200015 rewrite phase: 3 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script value: "/usr/local/www/htdocs/outofservice.html" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script file op 0000000000000000 "/usr/local/www/htdocs/outofservice.html" 2014/07/22 12:35:11 [debug] 63699#0: *200015 add cleanup: 0000000803891510 2014/07/22 12:35:11 [debug] 63699#0: *200015 cached open file: /usr/local/www/htdocs/outofservice.html, fd:-1, c:0, e:2, u:441 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script file op false 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script if 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script if: false 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "0" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script value: "1" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script equal 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script equal: no 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script if 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script if: false 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script value: "" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script equal 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script if 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script complex value 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "www.example.com" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script set $forced_host 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script value: "local" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script set $ndcom_upstream_name 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var 2014/07/22 12:35:11 [debug] 63699#0: *200015 http map started 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "183.60.213.30" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http map: "183.60.213.30" "new-backends" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "new-backends" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script if 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script complex value 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "new-backends" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script set $upstream_name 2014/07/22 12:35:11 [debug] 63699#0: *200015 post rewrite phase: 4 2014/07/22 12:35:11 [debug] 63699#0: *200015 generic phase: 5 2014/07/22 12:35:11 [debug] 63699#0: *200015 generic phase: 6 2014/07/22 12:35:11 [debug] 63699#0: *200015 generic phase: 7 2014/07/22 12:35:11 [debug] 63699#0: *200015 limit conn: 8AD0B9F2 1 2014/07/22 12:35:11 [debug] 63699#0: *200015 add cleanup: 0000000803891588 2014/07/22 12:35:11 [debug] 63699#0: *200015 access phase: 8 2014/07/22 12:35:11 [debug] 63699#0: *200015 access phase: 9 2014/07/22 12:35:11 [debug] 63699#0: *200015 post access phase: 10 2014/07/22 12:35:11 [debug] 63699#0: *200015 try files phase: 11 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: "http://" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "new-backends" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "/download/driver/AZTECH+MDP_3858SP-WE.html" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http client request body preread 536 2014/07/22 12:35:11 [debug] 63699#0: *200015 http request body content length filter 2014/07/22 12:35:11 [debug] 63699#0: *200015 http body new buf t:1 f:0 00000008038089E8, pos 00000008038089E8, size: 536 file: 0, size: 0 2014/07/22 12:35:11 [debug] 63699#0: *200015 http read client request body 2014/07/22 12:35:11 [debug] 63699#0: *200015 recv: eof:0, avail:0, err:0 2014/07/22 12:35:11 [debug] 63699#0: *200015 http client request body recv -2 2014/07/22 12:35:11 [debug] 63699#0: *200015 http client request body rest 391 2014/07/22 12:35:11 [debug] 63699#0: *200015 event timer add: 38: 60000:1406032571647 2014/07/22 12:35:11 [debug] 63699#0: *200015 kevent set event: 38: ft:-1 fl:0025 2014/07/22 12:35:11 [debug] 63699#0: *200015 http finalize request: -4, "/download/driver/AZTECH+MDP_3858SP-WE.html?" a:1, c:3 2014/07/22 12:35:11 [debug] 63699#0: *200015 http request count:3 blk:0 2014/07/22 12:35:11 [debug] 63699#0: *200015 http finalize request: -4, "/download/driver/AZTECH+MDP_3858SP-WE.html?" a:1, c:2 2014/07/22 12:35:11 [debug] 63699#0: *200015 http request count:2 blk:0 2014/07/22 12:35:11 [debug] 63699#0: *200015 kevent: 38: ft:-1 fl:8020 ff:00000000 d:391 ud:0000000806C07381 2014/07/22 12:35:11 [debug] 63699#0: *200015 post event 0000000806C07380 2014/07/22 12:35:11 [debug] 63699#0: *200015 delete posted event 0000000806C07380 2014/07/22 12:35:11 [debug] 63699#0: *200015 http run request: "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http read client request body 2014/07/22 12:35:11 [debug] 63699#0: *200015 recv: eof:1, avail:391, err:0 2014/07/22 12:35:11 [debug] 63699#0: *200015 recv: fd:38 391 of 391 2014/07/22 12:35:11 [debug] 63699#0: *200015 http client request body recv 391 2014/07/22 12:35:11 [debug] 63699#0: *200015 http body old buf t:1 f:0 00000008038089E8, pos 00000008038089E8, size: 536 file: 0, size: 0 2014/07/22 12:35:11 [debug] 63699#0: *200015 http body new buf t:1 f:0 0000000803891C90, pos 0000000803891C90, size: 391 file: 0, size: 0 2014/07/22 12:35:11 [debug] 63699#0: *200015 http client request body rest 0 2014/07/22 12:35:11 [debug] 63699#0: *200015 event timer del: 38: 1406032571647 2014/07/22 12:35:11 [debug] 63699#0: *200015 http init upstream, client timer: 0 2014/07/22 12:35:11 [debug] 63699#0: *200015 kevent set event: 38: ft:-2 fl:0025 2014/07/22 12:35:11 [debug] 63699#0: *200015 posix_memalign: 0000000803893000:4096 @16 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: "Host: " 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "www.example.com" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: " 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: "X-Real-IP: " 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "183.60.213.30" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: " 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: "X-Forwarded-For: " 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "183.60.213.30" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: " 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: "X-Forwarded-Port: " 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "80" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: " 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: "Content-Length: " 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "927" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: " 2014/07/22 12:35:11 [debug] 63699#0: *200015 http proxy header: "User-Agent: Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html)" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http proxy header: "Accept-Encoding: gzip, deflate" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http proxy header: "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http proxy header: "Accept-Language: zh;q=0.9,en;q=0.8" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http proxy header: "Refer: http://www.example.com/" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http proxy header: "Content-Type: application/x-www-form-urlencoded" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http proxy header: 2014/07/22 12:35:11 [debug] 63699#0: *200015 http cleanup add: 0000000803891FD0 2014/07/22 12:35:11 [debug] 63699#0: *200015 init keepalive peer 2014/07/22 12:35:11 [debug] 63699#0: *200015 get keepalive peer 2014/07/22 12:35:11 [debug] 63699#0: *200015 get rr peer, try: 2 2014/07/22 12:35:11 [debug] 63699#0: *200015 get rr peer, current: 0 -5 2014/07/22 12:35:11 [debug] 63699#0: *200015 socket 134 2014/07/22 12:35:11 [debug] 63699#0: *200015 connect to 127.0.0.1:80, fd:134 #200016 2014/07/22 12:35:11 [debug] 63699#0: *200015 kevent set event: 134: ft:-1 fl:0025 2014/07/22 12:35:11 [debug] 63699#0: *200015 kevent set event: 134: ft:-2 fl:0025 2014/07/22 12:35:11 [debug] 63699#0: *200015 http upstream connect: -2 2014/07/22 12:35:11 [debug] 63699#0: *200015 posix_memalign: 0000000803834800:128 @16 2014/07/22 12:35:11 [debug] 63699#0: *200015 event timer add: 134: 90000:1406032601647 2014/07/22 12:35:11 [debug] 63699#0: *200015 kevent: 38: ft:-2 fl:0020 ff:00000000 d:66608 ud:0000000806D1F381 2014/07/22 12:35:11 [debug] 63699#0: *200015 post event 0000000806D1F380 2014/07/22 12:35:11 [debug] 63699#0: *200015 kevent: 134: ft:-2 fl:0020 ff:00000000 d:43008 ud:0000000806D210D0 2014/07/22 12:35:11 [debug] 63699#0: *200015 post event 0000000806D210D0 2014/07/22 12:35:11 [debug] 63699#0: *200015 delete posted event 0000000806D210D0 2014/07/22 12:35:11 [debug] 63699#0: *200015 http upstream request: "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http upstream send request handler 2014/07/22 12:35:11 [debug] 63699#0: *200015 http upstream send request 2014/07/22 12:35:11 [debug] 63699#0: *200015 chain writer buf fl:0 s:554 2014/07/22 12:35:11 [debug] 63699#0: *200015 chain writer buf fl:0 s:536 2014/07/22 12:35:11 [debug] 63699#0: *200015 chain writer buf fl:1 s:391 2014/07/22 12:35:11 [debug] 63699#0: *200015 chain writer in: 0000000803893300 2014/07/22 12:35:11 [debug] 63699#0: *200015 writev: 1481 of 1481 2014/07/22 12:35:11 [debug] 63699#0: *200015 chain writer out: 0000000000000000 2014/07/22 12:35:11 [debug] 63699#0: *200015 event timer del: 134: 1406032601647 2014/07/22 12:35:11 [debug] 63699#0: *200015 event timer add: 134: 90000:1406032601648 2014/07/22 12:35:11 [debug] 63699#0: *200015 delete posted event 0000000806D1F380 2014/07/22 12:35:11 [debug] 63699#0: *200015 http run request: "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http upstream check client, write event:1, "/download/driver/AZTECH+MDP_3858SP-WE.html" 2014/07/22 12:35:11 [debug] 63699#0: *200015 kevent: 134: ft:-2 fl:0020 ff:00000000 d:43008 ud:0000000806D210D0 2014/07/22 12:35:11 [debug] 63699#0: *200015 post event 0000000806D210D0 2014/07/22 12:35:11 [debug] 63699#0: *200015 delete posted event 0000000806D210D0 2014/07/22 12:35:11 [debug] 63699#0: *200015 http upstream request: "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http upstream dummy handler 2014/07/22 12:36:41 [debug] 63699#0: *200015 event timer del: 134: 1406032601648 2014/07/22 12:36:41 [debug] 63699#0: *200015 http upstream request: "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:36:41 [debug] 63699#0: *200015 http upstream process header 2014/07/22 12:36:41 [debug] 63699#0: *200015 http next upstream, 4 2014/07/22 12:36:41 [debug] 63699#0: *200015 free keepalive peer 2014/07/22 12:36:41 [debug] 63699#0: *200015 free rr peer 2 4 2014/07/22 12:36:41 [debug] 63699#0: *200015 free rr peer failed: 0 0 2014/07/22 12:36:41 [error] 63699#0: *200015 upstream timed out (60: Operation timed out) while reading response header from upstream, client: 183.60.213.30, server: www.example.com, request: "GET /download/driver/AZTECH+MDP_3858SP-WE.html HTTP/1.1", upstream: "http://127.0.0.1:80/download/driver/AZTECH+MDP_3858SP-WE.html", host: "www.example.com" 2014/07/22 12:36:41 [debug] 63699#0: *200015 close http upstream connection: 134 2014/07/22 12:36:41 [debug] 63699#0: *200015 free: 0000000803834800, unused: 48 2014/07/22 12:36:41 [debug] 63699#0: *200015 reusable connection: 0 2014/07/22 12:36:41 [debug] 63699#0: *200015 get keepalive peer 2014/07/22 12:36:41 [debug] 63699#0: *200015 get rr peer, try: 1 2014/07/22 12:36:41 [debug] 63699#0: *200015 get rr peer, current: 1 0 2014/07/22 12:36:41 [debug] 63699#0: *200015 socket 3 2014/07/22 12:36:41 [debug] 63699#0: *200015 connect to 94.75.244.108:80, fd:3 #204118 2014/07/22 12:36:41 [debug] 63699#0: *200015 kevent set event: 3: ft:-1 fl:0025 2014/07/22 12:36:41 [debug] 63699#0: *200015 kevent set event: 3: ft:-2 fl:0025 2014/07/22 12:36:41 [debug] 63699#0: *200015 http upstream connect: -2 2014/07/22 12:36:41 [debug] 63699#0: *200015 posix_memalign: 0000000803834780:128 @16 2014/07/22 12:36:41 [debug] 63699#0: *200015 event timer add: 3: 90000:1406032691649 2014/07/22 12:36:41 [debug] 63699#0: *200015 kevent: 3: ft:-2 fl:0020 ff:00000000 d:33304 ud:0000000806D210D1 2014/07/22 12:36:41 [debug] 63699#0: *200015 http upstream request: "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:36:41 [debug] 63699#0: *200015 http upstream send request handler 2014/07/22 12:36:41 [debug] 63699#0: *200015 http upstream send request 2014/07/22 12:36:41 [debug] 63699#0: *200015 chain writer buf fl:0 s:554 2014/07/22 12:36:41 [debug] 63699#0: *200015 chain writer buf fl:0 s:536 2014/07/22 12:36:41 [debug] 63699#0: *200015 chain writer buf fl:1 s:391 2014/07/22 12:36:41 [debug] 63699#0: *200015 chain writer in: 0000000803893520 2014/07/22 12:36:41 [debug] 63699#0: *200015 writev: 1481 of 1481 2014/07/22 12:36:41 [debug] 63699#0: *200015 chain writer out: 0000000000000000 2014/07/22 12:36:41 [debug] 63699#0: *200015 event timer del: 3: 1406032691649 2014/07/22 12:36:41 [debug] 63699#0: *200015 event timer add: 3: 90000:1406032691650 2014/07/22 12:36:41 [debug] 63699#0: *200015 kevent: 3: ft:-2 fl:0020 ff:00000000 d:33304 ud:0000000806D210D1 2014/07/22 12:36:41 [debug] 63699#0: *200015 http upstream request: "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:36:41 [debug] 63699#0: *200015 http upstream dummy handler 2014/07/22 12:38:11 [debug] 63699#0: *200015 event timer del: 3: 1406032691650 2014/07/22 12:38:11 [debug] 63699#0: *200015 http upstream request: "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:38:11 [debug] 63699#0: *200015 http upstream process header 2014/07/22 12:38:11 [debug] 63699#0: *200015 http next upstream, 4 2014/07/22 12:38:11 [debug] 63699#0: *200015 free keepalive peer 2014/07/22 12:38:11 [debug] 63699#0: *200015 free rr peer 1 4 2014/07/22 12:38:11 [debug] 63699#0: *200015 free rr peer failed: 1 0 2014/07/22 12:38:11 [error] 63699#0: *200015 upstream timed out (60: Operation timed out) while reading response header from upstream, client: 183.60.213.30, server: www.example.com, request: "GET /download/driver/AZTECH+MDP_3858SP-WE.html HTTP/1.1", upstream: "http://94.75.244.108:80/download/driver/AZTECH+MDP_3858SP-WE.html", host: "www.example.com" 2014/07/22 12:38:11 [debug] 63699#0: *200015 finalize http upstream request: 504 2014/07/22 12:38:11 [debug] 63699#0: *200015 finalize http proxy request 2014/07/22 12:38:11 [debug] 63699#0: *200015 close http upstream connection: 3 2014/07/22 12:38:11 [debug] 63699#0: *200015 free: 0000000803834780, unused: 48 2014/07/22 12:38:11 [debug] 63699#0: *200015 reusable connection: 0 2014/07/22 12:38:11 [debug] 63699#0: *200015 http finalize request: 504, "/download/driver/AZTECH+MDP_3858SP-WE.html?" a:1, c:1 2014/07/22 12:38:11 [debug] 63699#0: *200015 http special response: 504, "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:38:11 [debug] 63699#0: *200015 test location: "@default500" 2014/07/22 12:38:11 [debug] 63699#0: *200015 test location: "@error500" 2014/07/22 12:38:11 [debug] 63699#0: *200015 using location: @error500 "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:38:11 [debug] 63699#0: *200015 rewrite phase: 3 2014/07/22 12:38:11 [debug] 63699#0: *200015 post rewrite phase: 4 2014/07/22 12:38:11 [debug] 63699#0: *200015 generic phase: 5 2014/07/22 12:38:11 [debug] 63699#0: *200015 generic phase: 6 2014/07/22 12:38:11 [debug] 63699#0: *200015 generic phase: 7 2014/07/22 12:38:11 [debug] 63699#0: *200015 access phase: 8 2014/07/22 12:38:11 [debug] 63699#0: *200015 access phase: 9 2014/07/22 12:38:11 [debug] 63699#0: *200015 post access phase: 10 2014/07/22 12:38:11 [debug] 63699#0: *200015 try files phase: 11 2014/07/22 12:38:11 [debug] 63699#0: *200015 http script var: "/usr/home/example/public_html/" 2014/07/22 12:38:11 [debug] 63699#0: *200015 trying to use file: "/500.htm" "/usr/home/example/public_html//500.htm" 2014/07/22 12:38:11 [debug] 63699#0: *200015 add cleanup: 00000008038935A8 2014/07/22 12:38:11 [debug] 63699#0: *200015 malloc: 0000000807191680:136 2014/07/22 12:38:11 [debug] 63699#0: *200015 malloc: 0000000803BE50A0:37 2014/07/22 12:38:11 [debug] 63699#0: *200015 cached open file: /usr/home/example/public_html//500.htm, fd:3, c:1, e:0, u:1 2014/07/22 12:38:11 [debug] 63699#0: *200015 try file uri: "/500.htm" 2014/07/22 12:38:11 [debug] 63699#0: *200015 content phase: 12 2014/07/22 12:38:11 [debug] 63699#0: *200015 content phase: 13 2014/07/22 12:38:11 [debug] 63699#0: *200015 content phase: 14 2014/07/22 12:38:11 [debug] 63699#0: *200015 content phase: 15 2014/07/22 12:38:11 [debug] 63699#0: *200015 http script var: "/usr/home/example/public_html/" 2014/07/22 12:38:11 [debug] 63699#0: *200015 http filename: "/usr/home/example/public_html//500.htm" 2014/07/22 12:38:11 [debug] 63699#0: *200015 add cleanup: 0000000803893608 2014/07/22 12:38:11 [debug] 63699#0: *200015 cached open file: /usr/home/example/public_html//500.htm, fd:3, c:2, e:0, u:2 2014/07/22 12:38:11 [debug] 63699#0: *200015 http static fd: 3 2014/07/22 12:38:11 [debug] 63699#0: *200015 HTTP/1.1 503 Service Temporarily Unavailable 2014/07/22 12:38:11 [debug] 63699#0: *200015 write new buf t:1 f:0 00000008038937C8, pos 00000008038937C8, size: 188 file: 0, size: 0 2014/07/22 12:38:11 [debug] 63699#0: *200015 http write filter: l:0 f:0 s:188 2014/07/22 12:38:11 [debug] 63699#0: *200015 http output filter "/500.htm?" 2014/07/22 12:38:11 [debug] 63699#0: *200015 http copy filter: "/500.htm?" 2014/07/22 12:38:11 [debug] 63699#0: *200015 image filter 2014/07/22 12:38:11 [debug] 63699#0: *200015 http postpone filter "/500.htm?" 00007FFFFFFFD6E0 2014/07/22 12:38:11 [debug] 63699#0: *200015 write old buf t:1 f:0 00000008038937C8, pos 00000008038937C8, size: 188 file: 0, size: 0 2014/07/22 12:38:11 [debug] 63699#0: *200015 write new buf t:0 f:1 0000000000000000, pos 0000000000000000, size: 0 file: 0, size: 1202 2014/07/22 12:38:11 [debug] 63699#0: *200015 http write filter: l:1 f:0 s:1390 2014/07/22 12:38:11 [debug] 63699#0: *200015 http write filter limit 0 2014/07/22 12:38:11 [debug] 63699#0: *200015 tcp_nopush 2014/07/22 12:38:11 [debug] 63699#0: *200015 sendfile: 0, @0 1390:1202 2014/07/22 12:38:11 [debug] 63699#0: *200015 http write filter 0000000000000000 2014/07/22 12:38:11 [debug] 63699#0: *200015 http copy filter: 0 "/500.htm?" 2014/07/22 12:38:11 [debug] 63699#0: *200015 http finalize request: 0, "/500.htm?" a:1, c:2 2014/07/22 12:38:11 [debug] 63699#0: *200015 http request count:2 blk:0 2014/07/22 12:38:11 [debug] 63699#0: *200015 http finalize request: -4, "/500.htm?" a:1, c:1 2014/07/22 12:38:11 [debug] 63699#0: *200015 event timer add: 38: 5000:1406032696651 2014/07/22 12:38:11 [debug] 63699#0: *200015 http lingering close handler 2014/07/22 12:38:11 [debug] 63699#0: *200015 recv: eof:1, avail:0, err:0 2014/07/22 12:38:11 [debug] 63699#0: *200015 lingering read: 0 2014/07/22 12:38:11 [debug] 63699#0: *200015 http request count:1 blk:0 2014/07/22 12:38:11 [debug] 63699#0: *200015 http close request 2014/07/22 12:38:11 [debug] 63699#0: *200015 http log handler 2014/07/22 12:38:11 [debug] 63699#0: *200015 run cleanup: 0000000803893608 2014/07/22 12:38:11 [debug] 63699#0: *200015 close cached open file: /usr/home/example/public_html//500.htm, fd:3, c:1, u:2, 0 2014/07/22 12:38:11 [debug] 63699#0: *200015 expire cached open file: /usr/home/example/public_html//download/driver/ASUS+EAX800_Series/265242.html 2014/07/22 12:38:11 [debug] 63699#0: *200015 expire cached open file: /usr/home/example/public_html//manual/newmans/1165563205KS0951(SM700433-00_11)pdf/get16192.html 2014/07/22 12:38:11 [debug] 63699#0: *200015 run cleanup: 00000008038935A8 2014/07/22 12:38:11 [debug] 63699#0: *200015 close cached open file: /usr/home/example/public_html//500.htm, fd:3, c:0, u:2, 0 2014/07/22 12:38:11 [debug] 63699#0: *200015 expire cached open file: /usr/home/example/public_html/manual/ks-rt510rb/get103327.html 2014/07/22 12:38:11 [debug] 63699#0: *200015 expire cached open file: /usr/home/example/public_html//driver/GS-R115V-RH__1_0_/get52879.html 2014/07/22 12:38:11 [debug] 63699#0: *200015 run cleanup: 0000000803891588 2014/07/22 12:38:11 [debug] 63699#0: *200015 free: 0000000803890000, unused: 7 2014/07/22 12:38:11 [debug] 63699#0: *200015 free: 0000000803891000, unused: 8 2014/07/22 12:38:11 [debug] 63699#0: *200015 free: 0000000803893000, unused: 1364 2014/07/22 12:38:11 [debug] 63699#0: *200015 close http connection: 38 2014/07/22 12:38:11 [debug] 63699#0: *200015 event timer del: 38: 1406032696651 2014/07/22 12:38:11 [debug] 63699#0: *200015 reusable connection: 0 2014/07/22 12:38:11 [debug] 63699#0: *200015 free: 0000000803808800 2014/07/22 12:38:11 [debug] 63699#0: *200015 free: 0000000807182000, unused: 0 2014/07/22 12:38:11 [debug] 63699#0: *200015 free: 0000000807182100, unused: 108 Обратил внимание на следующие строки: 2014/07/22 12:35:11 [debug] 63699#0: *200015 http upstream request: "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:35:11 [debug] 63699#0: *200015 http upstream dummy handler 2014/07/22 12:36:41 [debug] 63699#0: *200015 event timer del: 134: 1406032601648 2014/07/22 12:36:41 [debug] 63699#0: *200015 http upstream request: "/download/driver/AZTECH+MDP_3858SP-WE.html?" 2014/07/22 12:36:41 [debug] 63699#0: *200015 http upstream process header 2014/07/22 12:36:41 [debug] 63699#0: *200015 http next upstream, 4 2014/07/22 12:36:41 [debug] 63699#0: *200015 free keepalive peer 2014/07/22 12:36:41 [debug] 63699#0: *200015 free rr peer 2 4 2014/07/22 12:36:41 [debug] 63699#0: *200015 free rr peer failed: 0 0 2014/07/22 12:36:41 [error] 63699#0: *200015 upstream timed out (60: Operation timed out) while reading response header from upstream, client: 183.60.213.30, server: www.example.com, request: "GET /download/driver/AZTECH+MDP_3858SP-WE.html HTTP/1.1", upstream: "http://127.0.0.1:80/download/driver/AZTECH+MDP_3858SP-WE.html", host: "www.example.com" 2014/07/22 12:36:41 [debug] 63699#0: *200015 close http upstream connection: 134 В 12:35:11 отправили запрос бекенду, а через полторы минуты вывалились по таймауту. Все бы ничего, если бы не логи самого бекенда: 183.60.213.30 - - [22/Jul/2014:12:36:41 +0000] "GET /download/driver/AZTECH+MDP_3858SP-WE.html HTTP/1.1" 200 4953 0/45331 "-" "Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html)" Бекенд получил и обработал этот запрос как раз в тот момент, когда nginx разрывает соединение. Обработка запроса заняла 45331 us. То есть, как такового таймаута быть не должно, бекенд моментально обработал этот запрос. Так вот, непонятно, куда все таки попал этот http-запрос и почему он попал к бекенду при срабатывании таймаута nginx'а. Кто-нибудь сталкивался с подобным? Есть ли мысли о причинах подобного поведения? Версии софта: ОС: FreeBSD 9.0-RELEASE-p3 #0: Tue Jun 12 02:52:29 UTC 2012 root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64 Nginx: nginx version: nginx/1.4.4 TLS SNI support enabled configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --with-ld-opt='-L /usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx-error.log --user=www --group=www --with-debug --with-file-aio --http-client-body-temp-path=/var/tmp/nginx/client_body_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp --http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-scgi-temp-path=/var/tmp/nginx/scgi_temp --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp --http-log-path=/var/log/nginx-access.log --with-http_addition_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_perl_module --with-http_realip_module --with-http_secure_link_module --with-http_stub_status_module --with-pcre --with-http_ssl_module Apache: Server version: Apache/2.2.22 (FreeBSD) Server built: Oct 27 2012 07:23:23 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252010,252010#msg-252010 From nginx-forum at nginx.us Thu Jul 24 10:01:09 2014 From: nginx-forum at nginx.us (itpp2012) Date: Thu, 24 Jul 2014 06:01:09 -0400 Subject: =?UTF-8?B?UmU6IHN1YnMgZmlsdGVyINC/0L7QtCB3aW5kb3dz?= In-Reply-To: <80a638dff46d6627812715353c006bba.NginxMailingListRussian@forum.nginx.org> References: <80a638dff46d6627812715353c006bba.NginxMailingListRussian@forum.nginx.org> Message-ID: <2e3015fbcaf38da0a69f1bd3f2848168.NginxMailingListRussian@forum.nginx.org> Или использовать предварительной сборки версию http://nginx-win.ecsds.eu/ Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251867,252015#msg-252015 From mdounin at mdounin.ru Thu Jul 24 19:53:15 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Thu, 24 Jul 2014 23:53:15 +0400 Subject: =?UTF-8?B?UmU6ICLQodGC0YDQsNC90L3Ri9C1IiDRgtCw0LnQvNCw0YPRgtGLINC/0YDQuCA=?= =?UTF-8?B?0L/QvtC70YPRh9C10L3QuNC4INC+0YLQstC10YLQsCDQvtGCINCx0LXQutC1?= =?UTF-8?B?0L3QtNCw?= In-Reply-To: References: Message-ID: <20140724195315.GQ1849@mdounin.ru> Hello! On Thu, Jul 24, 2014 at 05:51:14AM -0400, yanda.a wrote: > Доброго времени суток! > > С недавних пор стали появляться ошибки upstream timed out (60: Operation > timed out) while reading response header from upstream. > Что интересно, они появляются только для определенных клиентов, точнее, для > определенного клиента - какой-то китайской поисковой системы. Начали > разбираться с проблемой и наткнулись на еще одну странность. > > Логи nginx для неудачного запроса: [...] > 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script copy: > "Content-Length: " > 2014/07/22 12:35:11 [debug] 63699#0: *200015 http script var: "927" Запрос - с телом в 927 байт, что в целом для GET-запросов не характерно, и может быть причиной того, что проблема наблюдается только с конкретным клиентом. [...] > 2014/07/22 12:35:11 [debug] 63699#0: *200015 socket 134 > 2014/07/22 12:35:11 [debug] 63699#0: *200015 connect to 127.0.0.1:80, fd:134 #200016 Пошли на первый бекенд. [...] > 2014/07/22 12:35:11 [debug] 63699#0: *200015 http upstream send request > 2014/07/22 12:35:11 [debug] 63699#0: *200015 chain writer buf fl:0 s:554 > 2014/07/22 12:35:11 [debug] 63699#0: *200015 chain writer buf fl:0 s:536 > 2014/07/22 12:35:11 [debug] 63699#0: *200015 chain writer buf fl:1 s:391 Запрос полностью отправлен nginx'ом, в том числе 536 + 391 == 927 байт тела запроса. [...] > 2014/07/22 12:36:41 [debug] 63699#0: *200015 event timer del: 134: > 1406032601648 От бекенда так ничего и не пришло, сработал таймаут. [...] > 2014/07/22 12:36:41 [debug] 63699#0: *200015 get keepalive peer > 2014/07/22 12:36:41 [debug] 63699#0: *200015 get rr peer, try: 1 > 2014/07/22 12:36:41 [debug] 63699#0: *200015 get rr peer, current: 1 0 > 2014/07/22 12:36:41 [debug] 63699#0: *200015 socket 3 > 2014/07/22 12:36:41 [debug] 63699#0: *200015 connect to 94.75.244.108:80, > fd:3 #204118 Попытались пойти на другой бекенд. [...] > 2014/07/22 12:36:41 [debug] 63699#0: *200015 http upstream dummy handler > 2014/07/22 12:38:11 [debug] 63699#0: *200015 event timer del: 3: > 1406032691650 > 2014/07/22 12:38:11 [debug] 63699#0: *200015 http upstream request: > "/download/driver/AZTECH+MDP_3858SP-WE.html?" Снова не дождались ответа, опять сработал таймаут. [...] > В 12:35:11 отправили запрос бекенду, а через полторы минуты вывалились по > таймауту. Все бы ничего, если бы не логи самого бекенда: > 183.60.213.30 - - [22/Jul/2014:12:36:41 +0000] "GET > /download/driver/AZTECH+MDP_3858SP-WE.html HTTP/1.1" 200 4953 0/45331 "-" > "Mozilla/5.0 (compatible; EasouSpider; > +http://www.easou.com/search/spider.html)" Вероятно, это лог с первого из бекендов, и время 12:36:41 намекает, что обработка запроса начилась только в тот момент, когда nginx разорвал соединение по таймауту. > Бекенд получил и обработал этот запрос как раз в тот момент, когда nginx > разрывает соединение. Обработка запроса заняла 45331 us. То есть, как > такового таймаута быть не должно, бекенд моментально обработал этот запрос. > Так вот, непонятно, куда все таки попал этот http-запрос и почему он попал к > бекенду при срабатывании таймаута nginx'а. > > Кто-нибудь сталкивался с подобным? Есть ли мысли о причинах подобного > поведения? Запрос с телом и обработка, начинающаяся только при разрыве соединения - поведение, характерное для ошибок, связанных с чтением тела запроса. Бекенд по каким-то причинам считает, что должно быть больше данных, и ждёт их - пока соединение не закроют. При этом каких-либо проблем с отправляемым nginx'ом телом, судя по debug log'у, нет, так что имеет смысл смотреть в первую очередь на бекенд. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Thu Jul 24 20:12:13 2014 From: nginx-forum at nginx.us (yanda.a) Date: Thu, 24 Jul 2014 16:12:13 -0400 Subject: =?UTF-8?B?UmU6ICLQodGC0YDQsNC90L3Ri9C1IiDRgtCw0LnQvNCw0YPRgtGLINC/0YDQuCA=?= =?UTF-8?B?0L/QvtC70YPRh9C10L3QuNC4INC+0YLQstC10YLQsCDQvtGCINCx0LXQutC1?= =?UTF-8?B?0L3QtNCw?= In-Reply-To: <20140724195315.GQ1849@mdounin.ru> References: <20140724195315.GQ1849@mdounin.ru> Message-ID: <6c3abb5623844490c860507dc50511d9.NginxMailingListRussian@forum.nginx.org> Maxim Dounin Wrote: ------------------------------------------------------- > Hello! > > Запрос - с телом в 927 байт, что в целом для GET-запросов не > характерно, и может быть причиной того, что проблема наблюдается > только с конкретным клиентом. Спасибо, вот на это не обратил внимание! Завтра посмотрю на размер этих запросов по логам удачных запросов от этого клиента, может и правда проблема в этом. > Запрос с телом и обработка, начинающаяся только при разрыве > соединения - поведение, характерное для ошибок, связанных с > чтением тела запроса. Бекенд по каким-то причинам считает, что > должно быть больше данных, и ждёт их - пока соединение не закроют. > > При этом каких-либо проблем с отправляемым nginx'ом телом, судя по > debug log'у, нет, так что имеет смысл смотреть в первую очередь на > бекенд. Тоже логично по сути. Просто изначально грешил либо на сетевую подсистему, либо на сам nginx, но пока не хватает опыта для анализа такого лога, как этот. Тогда есть еще один вопрос. Если есть опыт работы с apache, можете подсказать, каким образом в нем можно отловить эту ошибку? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252010,252029#msg-252029 From mdounin at mdounin.ru Thu Jul 24 20:55:09 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Fri, 25 Jul 2014 00:55:09 +0400 Subject: =?UTF-8?B?UmU6ICLQodGC0YDQsNC90L3Ri9C1IiDRgtCw0LnQvNCw0YPRgtGLINC/0YDQuCA=?= =?UTF-8?B?0L/QvtC70YPRh9C10L3QuNC4INC+0YLQstC10YLQsCDQvtGCINCx0LXQutC1?= =?UTF-8?B?0L3QtNCw?= In-Reply-To: <6c3abb5623844490c860507dc50511d9.NginxMailingListRussian@forum.nginx.org> References: <20140724195315.GQ1849@mdounin.ru> <6c3abb5623844490c860507dc50511d9.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140724205508.GS1849@mdounin.ru> Hello! On Thu, Jul 24, 2014 at 04:12:13PM -0400, yanda.a wrote: > > Запрос с телом и обработка, начинающаяся только при разрыве > > соединения - поведение, характерное для ошибок, связанных с > > чтением тела запроса. Бекенд по каким-то причинам считает, что > > должно быть больше данных, и ждёт их - пока соединение не закроют. > > > > При этом каких-либо проблем с отправляемым nginx'ом телом, судя по > > debug log'у, нет, так что имеет смысл смотреть в первую очередь на > > бекенд. > Тоже логично по сути. Просто изначально грешил либо на сетевую подсистему, > либо на сам nginx, но пока не хватает опыта для анализа такого лога, как > этот. Тогда есть еще один вопрос. Если есть опыт работы с apache, можете > подсказать, каким образом в нем можно отловить эту ошибку? Для начала имеет смысл посмотреть в конфиг бекенда и понять, как обрабатываются соответствующие запросы. Если это динамика - то скорее всего проблема в скрипте, который обрабатывает запрос. Если статика - то имеет смысл обновить апач и посмотреть, не вылечит ли; если не вылечит - крутить LogLevel и смотреть в код. Или просто выкинуть апач из схемы и отдавать статику сразу nginx'ом. :) Ну и универсальный совет - в первую очередь имеет смысл научиться воспроизводить проблему. E.g., снять tcpdump'ом весь запрос целиком, и посылая его руками (telnet'ом, nc, ...) - убедиться, что таймаут воспроизводится. -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Fri Jul 25 05:26:58 2014 From: nginx-forum at nginx.us (yanda.a) Date: Fri, 25 Jul 2014 01:26:58 -0400 Subject: =?UTF-8?B?UmU6ICLQodGC0YDQsNC90L3Ri9C1IiDRgtCw0LnQvNCw0YPRgtGLINC/0YDQuCA=?= =?UTF-8?B?0L/QvtC70YPRh9C10L3QuNC4INC+0YLQstC10YLQsCDQvtGCINCx0LXQutC1?= =?UTF-8?B?0L3QtNCw?= In-Reply-To: <20140724205508.GS1849@mdounin.ru> References: <20140724205508.GS1849@mdounin.ru> Message-ID: Maxim Dounin Wrote: ------------------------------------------------------- > Для начала имеет смысл посмотреть в конфиг бекенда и понять, как > обрабатываются соответствующие запросы. Если это динамика - то > скорее всего проблема в скрипте, который обрабатывает запрос. > Если статика - то имеет смысл обновить апач и посмотреть, не > вылечит ли; если не вылечит - крутить LogLevel и смотреть в код. > Или просто выкинуть апач из схемы и отдавать статику сразу > nginx'ом. :) Да статика и так nginx'ом отдается) Так что, уперлось все в динамику, но динамика, судя по логам, отрабатывает быстро. То есть, нужно смотреть сам апач...( > Ну и универсальный совет - в первую очередь имеет смысл научиться > воспроизводить проблему. E.g., снять tcpdump'ом весь запрос > целиком, и посылая его руками (telnet'ом, nc, ...) - убедиться, > что таймаут воспроизводится. Были мысли про tcpdump, но нагрузка большая, почти не реально отловить нужный запрос... А так, в целом понял, спасибо большое за помощь!) Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252010,252033#msg-252033 From kpoxa at kpoxa.net Fri Jul 25 14:10:40 2014 From: kpoxa at kpoxa.net (kpoxa) Date: Fri, 25 Jul 2014 18:10:40 +0400 Subject: bug auth_request + form_input Message-ID: Добрый день. Наблюдаю баг следующего вида: При одновременно используемом auth_request и set_form_input nginx делает подзапрос нужному бэкэнду для авторизации, ему приходит валидный ответ, а дальше запрос не отрабатывает, клиент получает таймаут. Есть еще одно условие - это POST запрос, на который реагирует set_form_input. Воспроизводится на версиях 1.5.8 и 1.7.3 -- Рустам Нарманов -------------- next part -------------- An HTML attachment was scrubbed... URL: From vbart at nginx.com Fri Jul 25 17:55:54 2014 From: vbart at nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Fri, 25 Jul 2014 21:55:54 +0400 Subject: bug auth_request + form_input In-Reply-To: References: Message-ID: <2830875.b40vsHx4CX@vbart-laptop> On Friday 25 July 2014 18:10:40 kpoxa wrote: > Добрый день. > > Наблюдаю баг следующего вида: > > При одновременно используемом auth_request и set_form_input nginx делает > подзапрос нужному бэкэнду для авторизации, ему приходит валидный ответ, а > дальше запрос не отрабатывает, клиент получает таймаут. Есть еще одно > условие - это POST запрос, на который реагирует set_form_input. > > Воспроизводится на версиях 1.5.8 и 1.7.3 > [..] set_form_input - это директива стороннего модуля. Сообщать о проблеме имеет смысл автору модуля. -- Валентин Бартенев From borepstein at gmail.com Sun Jul 27 23:29:28 2014 From: borepstein at gmail.com (Boris Epstein) Date: Sun, 27 Jul 2014 19:29:28 -0400 Subject: =?UTF-8?B?0LrQsNGA0YLQuNC90LrQuCDQvdC1INC+0YLQvtCx0YDQsNC20LDRjtGC0YHRjw==?= Message-ID: Всем привет! У меня стоит набох nginx + php-fpm + drupal 7. С какого-то момента все картинки и разметка сайта (таблицы и т.д.) начисто перестали отображаться. Попытка переустановить Drupal ничего не меняет. Кто-нибудь с таким сталкивался? Что это может значить? Как это лечится? Заранее спасибо. Борис. -------------- next part -------------- An HTML attachment was scrubbed... URL: From stalker at altlinux.ru Mon Jul 28 06:42:40 2014 From: stalker at altlinux.ru (Anton Gorlov) Date: Mon, 28 Jul 2014 10:42:40 +0400 Subject: =?UTF-8?B?UmU6INC60LDRgNGC0LjQvdC60Lgg0L3QtSDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB?= =?UTF-8?B?0Y8=?= In-Reply-To: References: Message-ID: <53D5F0E0.8060501@altlinux.ru> 28.07.2014 03:29, Boris Epstein пишет: > У меня стоит набох nginx + php-fpm + drupal 7. С какого-то момента все > картинки и разметка сайта (таблицы и т.д.) начисто перестали отображаться. > Попытка переустановить Drupal ничего не меняет. > > Кто-нибудь с таким сталкивался? Что это может значить? Как это лечится? Смотрите логи nginx, и анализируйте. Штатные телепаты пока ещё в отпуске. From borepstein at gmail.com Mon Jul 28 10:08:29 2014 From: borepstein at gmail.com (Boris Epstein) Date: Mon, 28 Jul 2014 06:08:29 -0400 Subject: =?UTF-8?B?UmU6INC60LDRgNGC0LjQvdC60Lgg0L3QtSDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB?= =?UTF-8?B?0Y8=?= In-Reply-To: <53D5F0E0.8060501@altlinux.ru> References: <53D5F0E0.8060501@altlinux.ru> Message-ID: Это таки обидно, потому что в логах я пока ничего не разглядел:) Но будем рыть дальше, да. 2014-07-28 2:42 GMT-04:00 Anton Gorlov : > 28.07.2014 03:29, Boris Epstein пишет: > > У меня стоит набох nginx + php-fpm + drupal 7. С какого-то момента все > > картинки и разметка сайта (таблицы и т.д.) начисто перестали > отображаться. > > Попытка переустановить Drupal ничего не меняет. > > > > Кто-нибудь с таким сталкивался? Что это может значить? Как это лечится? > Смотрите логи nginx, и анализируйте. Штатные телепаты пока ещё в отпуске. > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -------------- next part -------------- An HTML attachment was scrubbed... URL: From stalker at altlinux.ru Tue Jul 29 08:26:53 2014 From: stalker at altlinux.ru (Anton Gorlov) Date: Tue, 29 Jul 2014 12:26:53 +0400 Subject: =?UTF-8?B?UmU6INC60LDRgNGC0LjQvdC60Lgg0L3QtSDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB?= =?UTF-8?B?0Y8=?= In-Reply-To: References: <53D5F0E0.8060501@altlinux.ru> Message-ID: <53D75ACD.4010502@altlinux.ru> Чудес не бывает. В логах должна быть какая-либо ошибка 28.07.2014 14:08, Boris Epstein пишет: > Это таки обидно, потому что в логах я пока ничего не разглядел:) > > Но будем рыть дальше, да. From nginx-forum at nginx.us Tue Jul 29 15:32:12 2014 From: nginx-forum at nginx.us (ded) Date: Tue, 29 Jul 2014 11:32:12 -0400 Subject: =?UTF-8?B?0KDQsNCx0L7RgtCwINGBINGD0LTQsNC70LXQvdC90YvQvNC4INGE0LDQudC70L4=?= =?UTF-8?B?0LLRi9C80Lgg0YHQtdGA0LLQtdGA0LDQvNC4ICjQv9GA0L7QutGB0LjRgNC+?= =?UTF-8?B?0LLQsNC90LjQtT8p?= Message-ID: Добрый день! Есть необходимость организовать описанную ниже схему. Интересует мнение коллег имеющих подобный опыт. Где можно ознакомиться с реализацией подобной схемы? Что почитать? Есть ли вариант лучше? Что можете посоветовать (опираясь на свой опыт)? Не хочется ошибиться еще до начала реализации поставленной задачи. см. http://habrastorage.org/files/aa8/7c4/4ba/aa87c44ba8bb42b2ae739cc4f3641329.jpg ***Получение файла с сервера:*** 1. Клиент посылает запрос web-серверу по http или https. Запрос обрабатывается php скриптом. Например: https://my.example.com/download.php?id=111;uname=test.txt 2. Web-сервер (скрипт) проверяет права на доступ к этому файлу и определяет на каком из удаленных серверов находится нужный файл. При этом происходит обращение к серверу БД. 3. Web-сервер (скрипт) запрашивает нужный файл с удаленного сервера по http или по https и отдает его клиенту. Клиент ни чего не должен знать про удаленный сервер, т.е. во всех headers должен фигурировать только my.example.com. Как вариант отправка заголовка X-Accel-Redirect серверу nginx, что бы проксировать файл без лишнего скачивания. ***Загрузка файла на сервер:*** 1. Клиент отправляет файл на web-сервер по http или https. Запрос так же обрабатывается скриптом. 2. Web-сервер (скрипт) определяет на каком из удаленных серверов будет находиться нужный файл и отправляет его туда по WebDAV. 3. Если файл успешно сохранен на файловом сервере скрипт вносит соответствующую запись в БД. Заранее благодарен! Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252107,252107#msg-252107 From chipitsine at gmail.com Tue Jul 29 17:31:34 2014 From: chipitsine at gmail.com (=?UTF-8?B?0JjQu9GM0Y8g0KjQuNC/0LjRhtC40L0=?=) Date: Tue, 29 Jul 2014 23:31:34 +0600 Subject: =?UTF-8?B?UmU6INCg0LDQsdC+0YLQsCDRgSDRg9C00LDQu9C10L3QvdGL0LzQuCDRhNCw0Lk=?= =?UTF-8?B?0LvQvtCy0YvQvNC4INGB0LXRgNCy0LXRgNCw0LzQuCAo0L/RgNC+0LrRgdC4?= =?UTF-8?B?0YDQvtCy0LDQvdC40LU/KQ==?= In-Reply-To: References: Message-ID: http://stackoverflow.com/questions/10574909/is-there-an-open-source-equivalent-to-amazon-s3 и еще CEPH (в статье не упоминается, но ничо такой, прикольный) 29 июля 2014 г., 21:32 пользователь ded написал: > Добрый день! > Есть необходимость организовать описанную ниже схему. > Интересует мнение коллег имеющих подобный опыт. Где можно ознакомиться с > реализацией подобной схемы? Что почитать? Есть ли вариант лучше? Что можете > посоветовать (опираясь на свой опыт)? Не хочется ошибиться еще до начала > реализации поставленной задачи. > > см. > http://habrastorage.org/files/aa8/7c4/4ba/aa87c44ba8bb42b2ae739cc4f3641329.jpg > > ***Получение файла с сервера:*** > > 1. Клиент посылает запрос web-серверу по http или https. Запрос > обрабатывается php скриптом. > Например: https://my.example.com/download.php?id=111;uname=test.txt > > 2. Web-сервер (скрипт) проверяет права на доступ к этому файлу и определяет > на каком из удаленных серверов находится нужный файл. При этом происходит > обращение к серверу БД. > > 3. Web-сервер (скрипт) запрашивает нужный файл с удаленного сервера по http > или по https и отдает его клиенту. > Клиент ни чего не должен знать про удаленный сервер, т.е. во всех headers > должен фигурировать только my.example.com. > Как вариант отправка заголовка X-Accel-Redirect серверу nginx, что бы > проксировать файл без лишнего скачивания. > > > ***Загрузка файла на сервер:*** > 1. Клиент отправляет файл на web-сервер по http или https. Запрос так же > обрабатывается скриптом. > > 2. Web-сервер (скрипт) определяет на каком из удаленных серверов будет > находиться нужный файл и отправляет его туда по WebDAV. > > 3. Если файл успешно сохранен на файловом сервере скрипт вносит > соответствующую запись в БД. > > > Заранее благодарен! > > Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252107,252107#msg-252107 > > _______________________________________________ > nginx-ru mailing list > nginx-ru at nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru From nginx-forum at nginx.us Wed Jul 30 12:00:17 2014 From: nginx-forum at nginx.us (Andrey_Karpov) Date: Wed, 30 Jul 2014 08:00:17 -0400 Subject: nginx is hiring: QA engineer In-Reply-To: <53D0D312.6040900@nginx.com> References: <53D0D312.6040900@nginx.com> Message-ID: <851d2d76c49095e6afbe64c2413ba077.NginxMailingListRussian@forum.nginx.org> Здравствуйте, Максим. Я время от времени ищу в интернете, что нового есть по сочетанию "статический анализ". В связи с этим, я случайно набрёл на вакансию QA engineer (http://forum.nginx.org/read.php?21,252014). Я вот подумал, не хотите отдать часть задач на удалённое выполнение? Мы можем разрабатывать тесты и правила статического анализа. Я в своё время проверяли nginx, но ничего не нашёл (http://www.viva64.com/ru/b/0246/). Но думаю, наша команда могла бы быть полезна, если создать специализированные правила, заточенные для nginx. Нам интересен "сложный outsource". Длинное письмо писать не хочу. Просто решил узнать, интересна Вам эта тема или нет. Совсем кратко о нас и заказной разработке: http://www.viva64.com/ru/outsourcing/ http://habrahabr.ru/company/pvs-studio/blog/227169/ Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252014,252152#msg-252152 From maxim at nginx.com Wed Jul 30 12:14:04 2014 From: maxim at nginx.com (Maxim Konovalov) Date: Wed, 30 Jul 2014 16:14:04 +0400 Subject: nginx is hiring: QA engineer In-Reply-To: <851d2d76c49095e6afbe64c2413ba077.NginxMailingListRussian@forum.nginx.org> References: <53D0D312.6040900@nginx.com> <851d2d76c49095e6afbe64c2413ba077.NginxMailingListRussian@forum.nginx.org> Message-ID: <53D8E18C.80901@nginx.com> Андрей, добрый день! On 7/30/14 4:00 PM, Andrey_Karpov wrote: > Здравствуйте, Максим. > Я время от времени ищу в интернете, что нового есть по сочетанию > "статический анализ". В связи с этим, я случайно набрёл на вакансию QA > engineer (http://forum.nginx.org/read.php?21,252014). > Я вот подумал, не хотите отдать часть задач на удалённое выполнение? Мы > можем разрабатывать тесты и правила статического анализа. > Я в своё время проверяли nginx, но ничего не нашёл > (http://www.viva64.com/ru/b/0246/). Но думаю, наша команда могла бы быть > полезна, если создать специализированные правила, заточенные для nginx. Нам > интересен "сложный outsource". > Длинное письмо писать не хочу. Просто решил узнать, интересна Вам эта тема > или нет. > Совсем кратко о нас и заказной разработке: > http://www.viva64.com/ru/outsourcing/ > http://habrahabr.ru/company/pvs-studio/blog/227169/ > Не могли бы вы связаться со мной через email на maxim at nginx.com? А то в форуме я ваш email не вижу. -- Maxim Konovalov http://nginx.com From nginx-forum at nginx.us Wed Jul 30 12:27:18 2014 From: nginx-forum at nginx.us (Andrey_Karpov) Date: Wed, 30 Jul 2014 08:27:18 -0400 Subject: nginx is hiring: QA engineer In-Reply-To: <53D8E18C.80901@nginx.com> References: <53D8E18C.80901@nginx.com> Message-ID: <22e7d97fc173723f36caaba1270cef4e.NginxMailingListRussian@forum.nginx.org> Написал. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252014,252156#msg-252156 From nginx-forum at nginx.us Wed Jul 30 20:35:04 2014 From: nginx-forum at nginx.us (mistercx) Date: Wed, 30 Jul 2014 16:35:04 -0400 Subject: =?UTF-8?B?0LLQu9C+0LbQtdC90L3Ri9C1IGluY2x1ZGUgdmlydHVhbCDQsiBTU0k=?= Message-ID: <1098b0e9cba04a3dfbfb1dcfd3ec534f.NginxMailingListRussian@forum.nginx.org> Приветствую всех! Только что при переносе статического проекта с Apache на Nginx столкнулся с пренепреятнейшей особенностью - невозможностью использования вложенных include virtual в SSI. Например: файл lang.shtml ============ файл test.shtml ============ Результат: Nginx - вместо "Компания" в браузере видим None; Apache - отображается "Компания" SHTML-страниц в проекте около 6000. Есть какое-либо мысли как сие разруливается, или смотреть назад в сторону Apache? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252162,252162#msg-252162 From nginx-forum at nginx.us Wed Jul 30 22:18:58 2014 From: nginx-forum at nginx.us (mistercx) Date: Wed, 30 Jul 2014 18:18:58 -0400 Subject: =?UTF-8?B?UmU6INCy0LvQvtC20LXQvdC90YvQtSBpbmNsdWRlIHZpcnR1YWwg0LIgU1NJ?= In-Reply-To: <1098b0e9cba04a3dfbfb1dcfd3ec534f.NginxMailingListRussian@forum.nginx.org> References: <1098b0e9cba04a3dfbfb1dcfd3ec534f.NginxMailingListRussian@forum.nginx.org> Message-ID: Проблема решена: вместо include virtual пишем include file Под виндой проверил - работает, думаю под 'nix тоже проблем не будет. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252162,252164#msg-252164 From mdounin at mdounin.ru Thu Jul 31 11:28:30 2014 From: mdounin at mdounin.ru (Maxim Dounin) Date: Thu, 31 Jul 2014 15:28:30 +0400 Subject: =?UTF-8?B?UmU6INCy0LvQvtC20LXQvdC90YvQtSBpbmNsdWRlIHZpcnR1YWwg0LIgU1NJ?= In-Reply-To: <1098b0e9cba04a3dfbfb1dcfd3ec534f.NginxMailingListRussian@forum.nginx.org> References: <1098b0e9cba04a3dfbfb1dcfd3ec534f.NginxMailingListRussian@forum.nginx.org> Message-ID: <20140731112830.GG1849@mdounin.ru> Hello! On Wed, Jul 30, 2014 at 04:35:04PM -0400, mistercx wrote: > Приветствую всех! > > Только что при переносе статического проекта с Apache на Nginx столкнулся с > пренепреятнейшей особенностью - невозможностью использования вложенных > include virtual в SSI. > > Например: > > файл lang.shtml > ============ > > > > > файл test.shtml > ============ > > > > Результат: Nginx - вместо "Компания" в браузере видим None; Apache - > отображается "Компания" > > SHTML-страниц в проекте около 6000. Есть какое-либо мысли как сие > разруливается, или смотреть назад в сторону Apache? Надо так: Потому что по умолчанию nginx обрабатывает SSI-подзапросы параллельно, и приведённом случае переменная "company" устанавливается уже после того, как её попытались вывести. Вообще следует иметь в виду, что SSI в Apache и в nginx'е - местами различаются. При миграции подобных объемов кода - имеет смысл тщательно проверять работоспособность всех используемых конструкций. То, что умеет делать nginx, подробно описано в документации[1], но нюансы вроде вышеназванного могут быть неочевидны. http://nginx.org/ru/docs/http/ngx_http_ssi_module.html#commands -- Maxim Dounin http://nginx.org/ From nginx-forum at nginx.us Thu Jul 31 12:27:05 2014 From: nginx-forum at nginx.us (mistercx) Date: Thu, 31 Jul 2014 08:27:05 -0400 Subject: =?UTF-8?B?UmU6INCy0LvQvtC20LXQvdC90YvQtSBpbmNsdWRlIHZpcnR1YWwg0LIgU1NJ?= In-Reply-To: <20140731112830.GG1849@mdounin.ru> References: <20140731112830.GG1849@mdounin.ru> Message-ID: <70bc7cb6a044f81d24b9565ba902a658.NginxMailingListRussian@forum.nginx.org> Да, благодарю, я тоже дочитался до этого параметра. Ещё заметил интересную особенность SSI в Nginx: должно быть установлено в родительском shtml - только тогда оно актуально и для дочернего. Если я пытаюсь установить переменную в дочернем подключаемом SHTML - получаю None. В Апаче это не имеет значения, работает в обоих вариантах. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252162,252177#msg-252177