From nginx-forum на forum.nginx.org Thu Mar 1 11:57:34 2018 From: nginx-forum на forum.nginx.org (S.A.N) Date: Thu, 01 Mar 2018 06:57:34 -0500 Subject: WebSockets over HTTP/2 Message-ID: <153d77325e424822214fb7f87595ec6e.NginxMailingListRussian@forum.nginx.org> Chrome, реализовал WebSockets поверх HTTP/2 https://tools.ietf.org/html/draft-ietf-httpbis-h2-websockets-00 https://www.chromestatus.com/feature/6251293127475200 Есть в планах Nginx, реализации проксирование WebSockets поверх HTTP/2? Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278858,278858#msg-278858 From mdounin на mdounin.ru Thu Mar 1 14:20:44 2018 From: mdounin на mdounin.ru (Maxim Dounin) Date: Thu, 1 Mar 2018 17:20:44 +0300 Subject: WebSockets over HTTP/2 In-Reply-To: <153d77325e424822214fb7f87595ec6e.NginxMailingListRussian@forum.nginx.org> References: <153d77325e424822214fb7f87595ec6e.NginxMailingListRussian@forum.nginx.org> Message-ID: <20180301142044.GT89840@mdounin.ru> Hello! On Thu, Mar 01, 2018 at 06:57:34AM -0500, S.A.N wrote: > Chrome, реализовал WebSockets поверх HTTP/2 > > https://tools.ietf.org/html/draft-ietf-httpbis-h2-websockets-00 > https://www.chromestatus.com/feature/6251293127475200 > > Есть в планах Nginx, реализации проксирование WebSockets поверх HTTP/2? В настоящий момент таких планов нет. Если/когда появится стандарт и реализации в браузерах - посмотрим. Хотя вот лично мне - усиленно кажется, что конкретный драфт - суть достаточно вялая и наверное даже вредная попытка исправить косяк, заложенный в HTTP/2, и запрещающий Upgrade. Правильнее было бы признать проблему, и начать работать над тем, чтобы максимально отвязать HTTP/2 от собственно HTTP, оставив его отдельным уровнем мультиплексирования. -- Maxim Dounin http://mdounin.ru/ From nginx-forum на forum.nginx.org Thu Mar 1 15:08:57 2018 From: nginx-forum на forum.nginx.org (S.A.N) Date: Thu, 01 Mar 2018 10:08:57 -0500 Subject: WebSockets over HTTP/2 In-Reply-To: <20180301142044.GT89840@mdounin.ru> References: <20180301142044.GT89840@mdounin.ru> Message-ID: > Если/когда появится стандарт > и реализации в браузерах - посмотрим. Это уже работает в Chrome 66 (Canary) и Firefox разрабатывает реализацию, судя по всему браузеры пришли к консенсусу в этом вопросе. > Хотя вот лично мне - усиленно кажется, что конкретный драфт - суть > достаточно вялая и наверное даже вредная попытка исправить косяк, > заложенный в HTTP/2, и запрещающий Upgrade. Правильнее было бы > признать проблему, и начать работать над тем, чтобы максимально > отвязать HTTP/2 от собственно HTTP, оставив его отдельным уровнем > мультиплексирования. Представили Nginx, принимают какое-то участия в обсуждении новых фишек в НТТР протоколе? Я думаю это было бы полезно, для всех. Но я как прикладной разработчик, вижу пользу в том чтобы Websocket соединения юзал тот же клиентский сокет что и HTTP2 соединения. Сейчас браузер открывает два разных сокета, один для HTTP2 второй для Websocket, так более накладно и нет гарантии что два этих соединения придут на тот же прокси сервер, по этому ajax запросы и Websocket могут общатся с разными прокси, это не удобно и накладно. Спасибо. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278858,278866#msg-278866 From postmaster на softsearch.ru Fri Mar 2 09:38:58 2018 From: postmaster на softsearch.ru (=?utf-8?B?0JzQuNGF0LDQuNC7INCc0L7QvdCw0YjRkdCy?=) Date: Fri, 2 Mar 2018 12:38:58 +0300 Subject: WebSockets over HTTP/2 In-Reply-To: References: <20180301142044.GT89840@mdounin.ru> Message-ID: <982852648.20180302123858@softsearch.ru> Здравствуйте, S.A.N. > Но я как прикладной разработчик, вижу пользу в том чтобы Websocket > соединения юзал тот же клиентский сокет что и HTTP2 соединения. > Сейчас браузер открывает два разных сокета, один для HTTP2 второй > для Websocket, так более накладно и нет гарантии что два этих > соединения придут на тот же прокси сервер, по этому ajax запросы и > Websocket могут общатся с разными прокси, это не удобно и накладно. А в чём преимущества HTTP2 для Вас? Вы пробовали делать замеры, сравнивающие HTTP2 с HTTP1.1? -- С уважением, Михаил mailto:postmaster на softsearch.ru From nginx-forum на forum.nginx.org Fri Mar 2 10:12:31 2018 From: nginx-forum на forum.nginx.org (S.A.N) Date: Fri, 02 Mar 2018 05:12:31 -0500 Subject: WebSockets over HTTP/2 In-Reply-To: <982852648.20180302123858@softsearch.ru> References: <982852648.20180302123858@softsearch.ru> Message-ID: <50b9b4008b3c9ba581fa7fe6f5123004.NginxMailingListRussian@forum.nginx.org> > А в чём преимущества HTTP2 для Вас? Вы пробовали делать замеры, > сравнивающие HTTP2 с HTTP1.1? Для нас преимущество только в мультиплексировании, других преимуществ нет, у нас просто много параллельных ajax запросов, НТТР 2 push не использовали, возможно тоже полезная штука, но практики не было. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278858,278884#msg-278884 From vbart на nginx.com Fri Mar 2 11:31:51 2018 From: vbart на nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Fri, 02 Mar 2018 14:31:51 +0300 Subject: WebSockets over HTTP/2 In-Reply-To: <50b9b4008b3c9ba581fa7fe6f5123004.NginxMailingListRussian@forum.nginx.org> References: <982852648.20180302123858@softsearch.ru> <50b9b4008b3c9ba581fa7fe6f5123004.NginxMailingListRussian@forum.nginx.org> Message-ID: <3970802.aoKpEqaoEJ@vbart-laptop> On Friday, 2 March 2018 13:12:31 MSK S.A.N wrote: > > А в чём преимущества HTTP2 для Вас? Вы пробовали делать замеры, > > сравнивающие HTTP2 с HTTP1.1? > > Для нас преимущество только в мультиплексировании, других преимуществ нет, у > нас просто много параллельных ajax запросов, НТТР 2 push не использовали, > возможно тоже полезная штука, но практики не было. > От самого мультиплексирования на уровне приложения приемуществ особых нет, больше недостатков. Несколько TCP соединений работают лучше, чем столько же потоков, мультиплексированных внутри одного TCP соединения, как это сделано в HTTP/2 (а в HTTP/2 сделано ещё и особенно плохо). -- Валентин Бартенев From nginx-forum на forum.nginx.org Fri Mar 2 13:15:53 2018 From: nginx-forum на forum.nginx.org (S.A.N) Date: Fri, 02 Mar 2018 08:15:53 -0500 Subject: WebSockets over HTTP/2 In-Reply-To: <3970802.aoKpEqaoEJ@vbart-laptop> References: <3970802.aoKpEqaoEJ@vbart-laptop> Message-ID: <947df0749d0c3fefd92921883ab1d903.NginxMailingListRussian@forum.nginx.org> > От самого мультиплексирования на уровне приложения приемуществ особых > нет, > больше недостатков. Судите сами, на уровне приложения (браузера) сейчас есть два варианта: НТТР 1х - лимит 8 открытых сокетов на 1 хост, все запросы становятся в эти 8 очередей. НТТР 2 - в 1 сокет отправляются все запросы, получения ответов асинхроное, лимитов на кол-во запросов почти нет, очередей почти нет. У нас клиент веб приложения, занимается агрегированием данных полученных из многих ajax запросов на один хост. Часто нужно сделать 20-30 параллельных НТТР GET запросов, чтобы собрать все нужные данные, без Н2 мы становились в последовательную очередь, потому что в 8 сокетов столько запросов не влазит, в Н2 такой проблемы нет, для нас это важно потому что многие GET ответы кешируются на уровне Nginx и нам не выгодно стоять в очереди чтобы получить ответ из Nginx кеша. P.S. Нам кстати это (много параллельных GET запросов) нужно делать и на бекенде, между бекенд приложениями, я написал issue для Unit Nginx https://github.com/nginx/unit/issues/81 Есть реальные шансы что это когда-то будет реализовано? Спасибо. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278858,278891#msg-278891 From annulen на yandex.ru Fri Mar 2 13:36:10 2018 From: annulen на yandex.ru (Konstantin Tokarev) Date: Fri, 02 Mar 2018 16:36:10 +0300 Subject: WebSockets over HTTP/2 In-Reply-To: <947df0749d0c3fefd92921883ab1d903.NginxMailingListRussian@forum.nginx.org> References: <3970802.aoKpEqaoEJ@vbart-laptop> <947df0749d0c3fefd92921883ab1d903.NginxMailingListRussian@forum.nginx.org> Message-ID: <802621519997770@web57g.yandex.ru> 02.03.2018, 16:16, "S.A.N" : >>  От самого мультиплексирования на уровне приложения приемуществ особых >>  нет, >>  больше недостатков. > > Судите сами, на уровне приложения (браузера) сейчас есть два варианта: > > НТТР 1х - лимит 8 открытых сокетов на 1 хост, все запросы становятся в эти 8 > очередей. > НТТР 2 - в 1 сокет отправляются все запросы, получения ответов асинхроное, > лимитов на кол-во запросов почти нет, очередей почти нет. > > У нас клиент веб приложения, занимается агрегированием данных полученных из > многих ajax запросов на один хост. > Часто нужно сделать 20-30 параллельных НТТР GET запросов, чтобы собрать все > нужные данные, без Н2 мы становились в последовательную очередь, потому что > в 8 сокетов столько запросов не влазит, в Н2 такой проблемы нет, для нас это > важно потому что многие GET ответы кешируются на уровне Nginx и нам не > выгодно стоять в очереди чтобы получить ответ из Nginx кеша. Но к вебсокетам все это никакого отношения не имеет, не так ли? > > P.S. > Нам кстати это (много параллельных GET запросов) нужно делать и на бекенде, > между бекенд приложениями, я написал issue для Unit Nginx > https://github.com/nginx/unit/issues/81 > Есть реальные шансы что это когда-то будет реализовано? > > Спасибо. > > Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278858,278891#msg-278891 > > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -- Regards, Konstantin From nginx-forum на forum.nginx.org Fri Mar 2 13:47:36 2018 From: nginx-forum на forum.nginx.org (S.A.N) Date: Fri, 02 Mar 2018 08:47:36 -0500 Subject: WebSockets over HTTP/2 In-Reply-To: <802621519997770@web57g.yandex.ru> References: <802621519997770@web57g.yandex.ru> Message-ID: > Но к вебсокетам все это никакого отношения не имеет, не так ли? Да, вы правы, мой ответ был в контексте НТТР запросов. Польза для WebSocket использовать сокет Н2, в том что он будет держать открытым сокет, который использует ajax запросы. У нас может быть 20-30 ajax потом минут 15 тишина, юзер переключился на другую вкладку и наш Н2 сокет через 10 минут браузер закрывает, юзер возвращается и нам нужно открывать новый Н2 сокет для ajax запросов. Так же у меня есть мысль, сделать идентификацию юзера по ключу $server_id$nginx_worker$connection_id, эти значения юзер подделать не может, их будет передавать на бекенд Nginx в кастом заголовке. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278858,278893#msg-278893 From nginx-forum на forum.nginx.org Sat Mar 3 19:39:30 2018 From: nginx-forum на forum.nginx.org (kobevad) Date: Sat, 03 Mar 2018 14:39:30 -0500 Subject: =?UTF-8?B?Q29udGVudC1TZWN1cml0eS1Qb2xpY3k6IGZyYW1lLWFuY2VzdG9ycyDRgSDQuNGB?= =?UTF-8?B?0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IGFjY2NlcyBsaXN0?= Message-ID: <4cc098fadb2b62a82830c5e18b150f0a.NginxMailingListRussian@forum.nginx.org> Здравствуйте, уважаемое сообщество Подскажите, есть ли какая-то возможность задействовать хедер Content-Security-Policy с директивой frame-ancestors используя что-то вроде вложенного acces list-а(что-то похожее на include, upstream и т.п.) Задача: прятать прописанные, разрешённые в данной директиве Urls и пр.(а их достаточно много планируется) P.S. Может есть возможность прятать все атрибуты хедера Content-Security-Policy Спасибо за Ваши ответы Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278906,278906#msg-278906 From nginx-forum на forum.nginx.org Wed Mar 7 07:44:38 2018 From: nginx-forum на forum.nginx.org (digger) Date: Wed, 07 Mar 2018 02:44:38 -0500 Subject: =?UTF-8?B?0J/RgNC+0LrRgdC40YDQvtCy0LDQvdC40LUgU1NMINGC0YDQsNGE0LjQutCwINC0?= =?UTF-8?B?0LvRjyDQutC70LjQtdC90YLQvtCyINGBINCw0LLRgtC+0YDQuNC30LDRhtC4?= =?UTF-8?B?0LXQuSDQv9C+INGB0LXRgNGC0LjRhNC40LrQsNGC0YM=?= Message-ID: <4483cfbea45345d6dedf2fd888550e73.NginxMailingListRussian@forum.nginx.org> На территории клиента за NAT стоит http-сервер с адресом из локальной сети. Я делаю к нему доступ с сервера в датацентре с помощью nginx и OpenVPN. При этом клиент, написанный на Perl, использует авторизацию по сертификату. Цепочка серверов выглядит так: [Сервер в датацентре] -> [ Сервер OpenVPN и nginx в датацентре] -> [NAT]->[сервер nginx у клиента]->[сервер http у клиента] Все это задумано для того, чтобы перловые скрипты, работающие на сайте в датацентре, могли обращаться к серверу http, который стоит в офисе клиента. Этот http сервер имеет серый IP из локальной сети клиента. Без авторизации все прекрасно работает. Также нет проблем, когда скрипт Perl с авторизацией по сертификату запускается на сервере nginx у клиента, обращаясь по адресу, выданному OpenVPN. Однако у меня не получается настроить nginx в датацентре таким образом, чтобы я мог запускать скрипт с авторизацией по сертификату на сервере в датацентре. При этом запросы должны проходить через два сервера nginx - вначале они попадают по белому адресу на сервер nginx а датацентре, затем уже по адресу OpenVPN попадают на nginx в фоисе клиента, и уже потом - на сервер http в офисе клиента. Подскажите, пожалуйста, как настроить первый из этих серверов nginx, расположенный в датацентре по белому адресу IP, чтобы он мог проксировать (или делать редирект?) на второй сервер nginx запросы из скрипта Perl с авторизацией по сертификату? Спасибо! Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278948,278948#msg-278948 From nginx-forum на forum.nginx.org Wed Mar 7 17:50:49 2018 From: nginx-forum на forum.nginx.org (digger) Date: Wed, 07 Mar 2018 12:50:49 -0500 Subject: =?UTF-8?B?UmU6INCf0YDQvtC60YHQuNGA0L7QstCw0L3QuNC1IFNTTCDRgtGA0LDRhNC40Lo=?= =?UTF-8?B?0LAg0LTQu9GPINC60LvQuNC10L3RgtC+0LIg0YEg0LDQstGC0L7RgNC40Lc=?= =?UTF-8?B?0LDRhtC40LXQuSDQv9C+INGB0LXRgNGC0LjRhNC40LrQsNGC0YM=?= In-Reply-To: <4483cfbea45345d6dedf2fd888550e73.NginxMailingListRussian@forum.nginx.org> References: <4483cfbea45345d6dedf2fd888550e73.NginxMailingListRussian@forum.nginx.org> Message-ID: <872653f748889407cb70a141aadde865.NginxMailingListRussian@forum.nginx.org> Решил сделать попроще - авторизацию с помощь сертификата на первом сервере nginx, а дальше уже без SSL, но по закрытому каналу VPN. Так работает. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,278948,278958#msg-278958 From nginx-forum на forum.nginx.org Sat Mar 17 09:52:43 2018 From: nginx-forum на forum.nginx.org (iuerhiguerhg) Date: Sat, 17 Mar 2018 05:52:43 -0400 Subject: =?UTF-8?B?bmdpbngg0LrQvtC90YTQuNCzINC00LvRjyDQtNC+0LzQtdC90LA=?= Message-ID: подскажите пожалуйста что прописать в location конфига домена чтоб при запросе domain.com/1.html отдавало /var/www/www-root/25.html Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279071,279071#msg-279071 From nginx-forum на forum.nginx.org Sat Mar 17 21:41:25 2018 From: nginx-forum на forum.nginx.org (edo888) Date: Sat, 17 Mar 2018 17:41:25 -0400 Subject: =?UTF-8?B?0J7Qv9GP0YLRjCAoNjA6IE9wZXJhdGlvbiB0aW1lZCBvdXQpIHdoaWxlIHJlYWRp?= =?UTF-8?B?bmcgdXBzdHJlYW0sINC60LDQuiDQtNC10LHQsNCz0LjRgtGM?= Message-ID: Здравствуйте, Столкнулся с очень непонятной ситуацией: 2018/03/17 22:17:58 [error] 24476#103240: *1588730132 upstream timed out (60: Operation timed out) while reading upstream, client: X.X.X.X, server: YYY, request: "GET /AAA/ HTTP/1.1", upstream: "https://Z.Z.Z.Z:443/AAA/", host: "YYY" с резултатом в Google Chrome ERR_EMPTY_RESPONSE после 15 секунд (время таймаута). У меня reverse proxy. Это проиходит не со всеми страницами. Когда включаю debug_connection с моим IP, все начинает работать. Подскажите пожалуйста, как быть? Спасибо! Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279079,279079#msg-279079 From nginx-forum на forum.nginx.org Sun Mar 18 03:58:46 2018 From: nginx-forum на forum.nginx.org (edo888) Date: Sat, 17 Mar 2018 23:58:46 -0400 Subject: =?UTF-8?B?UmU6INCe0L/Rj9GC0YwgKDYwOiBPcGVyYXRpb24gdGltZWQgb3V0KSB3aGlsZSBy?= =?UTF-8?B?ZWFkaW5nIHVwc3RyZWFtLCDQutCw0Log0LTQtdCx0LDQs9C40YLRjA==?= In-Reply-To: References: Message-ID: <377fa6e5ff99cc88464b7148c18e7d9e.NginxMailingListRussian@forum.nginx.org> Временно исправил с помощью: error_log /dev/null debug; Конечно это не решение. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279079,279080#msg-279080 From nginx-forum на forum.nginx.org Tue Mar 20 08:10:54 2018 From: nginx-forum на forum.nginx.org (digger) Date: Tue, 20 Mar 2018 04:10:54 -0400 Subject: =?UTF-8?B?0J3QtdC/0L7QvdGP0YLQvdCw0Y8g0L7RiNC40LHQutCwINC/0YDQuCDQsNCy0YI=?= =?UTF-8?B?0L7RgNC40LfQsNGG0LjQuCDQuNC3INGB0LrRgNC40L/RgtCwIFBlcmwg0YEg?= =?UTF-8?B?0LrQu9C40LXQvdGC0YHQutC40Lwg0YHQtdGA0YLQuNGE0LjQutCw0YLQvtC8?= Message-ID: Странная штука... Пытаюсь обращаться к nginx с клиентским сертификатом из perl 5.24.1, получаю ошибку 500 и непонятные сообщения в логах. А в перле 5.20.2 все нормально. Скрипт и сертификаты те же самые openssl version OpenSSL 1.0.1t 3 May 2016 Подскажите, пожалуйста, в чем может быть причина ошибки? В логах nginx при попытке обращения вижу это: 2018/03/20 11:00:44 [debug] 875#0: post event 0000000001430260 2018/03/20 11:00:44 [debug] 875#0: delete posted event 0000000001430260 2018/03/20 11:00:44 [debug] 875#0: accept on **.**.**.**:8444, ready: 0 2018/03/20 11:00:44 [debug] 875#0: posix_memalign: 0000000001400A40:256 @16 2018/03/20 11:00:44 [debug] 875#0: *156 accept: **.**.**.** fd:5 2018/03/20 11:00:44 [debug] 875#0: posix_memalign: 00000000013D6C50:256 @16 2018/03/20 11:00:44 [debug] 875#0: *156 event timer add: 5: 60000:1521532904197 2018/03/20 11:00:44 [debug] 875#0: *156 reusable connection: 1 2018/03/20 11:00:44 [debug] 875#0: *156 epoll add event: fd:5 op:1 ev:80002001 2018/03/20 11:00:44 [debug] 875#0: *156 post event 0000000001430670 2018/03/20 11:00:44 [debug] 875#0: *156 delete posted event 0000000001430670 2018/03/20 11:00:44 [debug] 875#0: *156 http check ssl handshake 2018/03/20 11:00:44 [debug] 875#0: *156 http recv(): 1 2018/03/20 11:00:44 [debug] 875#0: *156 https ssl handshake: 0x16 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_do_handshake: -1 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_get_error: 2 2018/03/20 11:00:44 [debug] 875#0: *156 reusable connection: 0 2018/03/20 11:00:44 [debug] 875#0: *156 post event 0000000001430670 2018/03/20 11:00:44 [debug] 875#0: *156 delete posted event 0000000001430670 2018/03/20 11:00:44 [debug] 875#0: *156 SSL handshake handler: 0 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_do_handshake: 1 2018/03/20 11:00:44 [debug] 875#0: *156 SSL: TLSv1.2, cipher: "ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1" 2018/03/20 11:00:44 [debug] 875#0: *156 reusable connection: 1 2018/03/20 11:00:44 [debug] 875#0: *156 http wait request handler 2018/03/20 11:00:44 [debug] 875#0: *156 malloc: 0000000001405CF0:1024 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_read: -1 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_get_error: 2 2018/03/20 11:00:44 [debug] 875#0: *156 free: 0000000001405CF0 2018/03/20 11:00:44 [debug] 875#0: *156 post event 0000000001430670 2018/03/20 11:00:44 [debug] 875#0: *156 delete posted event 0000000001430670 2018/03/20 11:00:44 [debug] 875#0: *156 http wait request handler 2018/03/20 11:00:44 [debug] 875#0: *156 malloc: 0000000001405CF0:1024 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_read: 0 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_get_error: 5 2018/03/20 11:00:44 [debug] 875#0: *156 peer shutdown SSL cleanly 2018/03/20 11:00:44 [info] 875#0: *156 client closed connection while waiting for request, client: **.**.**.**, server: **.**.**.**:8444 2018/03/20 11:00:44 [debug] 875#0: *156 close http connection: 5 2018/03/20 11:00:44 [debug] 875#0: *156 SSL_shutdown: 1 2018/03/20 11:00:44 [debug] 875#0: *156 event timer del: 5: 1521532904197 2018/03/20 11:00:44 [debug] 875#0: *156 reusable connection: 0 2018/03/20 11:00:44 [debug] 875#0: *156 free: 0000000001405CF0 2018/03/20 11:00:44 [debug] 875#0: *156 free: 0000000001400A40, unused: 0 2018/03/20 11:00:44 [debug] 875#0: *156 free: 00000000013D6C50, unused: 56 Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279117,279117#msg-279117 From mdounin на mdounin.ru Tue Mar 20 12:46:54 2018 From: mdounin на mdounin.ru (Maxim Dounin) Date: Tue, 20 Mar 2018 15:46:54 +0300 Subject: =?UTF-8?B?UmU6INCd0LXQv9C+0L3Rj9GC0L3QsNGPINC+0YjQuNCx0LrQsCDQv9GA0Lgg0LA=?= =?UTF-8?B?0LLRgtC+0YDQuNC30LDRhtC40Lgg0LjQtyDRgdC60YDQuNC/0YLQsCBQZXJs?= =?UTF-8?B?INGBINC60LvQuNC10L3RgtGB0LrQuNC8INGB0LXRgNGC0LjRhNC40LrQsNGC?= =?UTF-8?B?0L7QvA==?= In-Reply-To: References: Message-ID: <20180320124654.GW77253@mdounin.ru> Hello! On Tue, Mar 20, 2018 at 04:10:54AM -0400, digger wrote: > Странная штука... Пытаюсь обращаться к nginx с клиентским сертификатом из > perl 5.24.1, получаю ошибку 500 и непонятные сообщения в логах. А в перле > 5.20.2 все нормально. Скрипт и сертификаты те же самые > > openssl version > OpenSSL 1.0.1t 3 May 2016 > > > Подскажите, пожалуйста, в чем может быть причина ошибки? > В логах nginx при попытке обращения вижу это: [...] > 2018/03/20 11:00:44 [info] 875#0: *156 client closed connection while > waiting for request, client: **.**.**.**, server: **.**.**.**:8444 Судя по логам - соединение закрывает клиент. Почему он это делает - надо разбираться на стороне клиента. Скорее всего ему не нравится сертификат сервера. -- Maxim Dounin http://mdounin.ru/ From nginx-forum на forum.nginx.org Tue Mar 20 12:58:38 2018 From: nginx-forum на forum.nginx.org (digger) Date: Tue, 20 Mar 2018 08:58:38 -0400 Subject: =?UTF-8?B?UmU6INCd0LXQv9C+0L3Rj9GC0L3QsNGPINC+0YjQuNCx0LrQsCDQv9GA0Lgg0LA=?= =?UTF-8?B?0LLRgtC+0YDQuNC30LDRhtC40Lgg0LjQtyDRgdC60YDQuNC/0YLQsCBQZXJs?= =?UTF-8?B?INGBINC60LvQuNC10L3RgtGB0LrQuNC8INGB0LXRgNGC0LjRhNC40LrQsNGC?= =?UTF-8?B?0L7QvA==?= In-Reply-To: <20180320124654.GW77253@mdounin.ru> References: <20180320124654.GW77253@mdounin.ru> Message-ID: <7dd37583e5b89afdd5de736b1890715f.NginxMailingListRussian@forum.nginx.org> Оказалось, что на той виртуалке, где не работает, стоит Net::SSLeay версии 1.8, и он действительно отвергает сертификат. Почему-то условия проверки не выполняются: if (Net::SSLeay::CTX_use_certificate_chain_file($ctx,$f)) { $havecert = 'PEM'; } elsif (Net::SSLeay::CTX_use_certificate_file($ctx,$f,FILETYPE_ASN1)) { $havecert = 'DER'; Такая ошибка: $havecert or return IO::Socket::SSL->error( "Failed to load certificate from file (no PEM, DER or PKCS12)"); Цепочка сертификатов не используется, но есть ca.crt. Может его нужно добавить в цепочку? А там, где работает, стоит Net::SSLeay версии 1.65. Сертификаты ровно те же самые, скопированные файлзиллой. Сейчас попробуем сделать даунгрейд Net::SSLeay до версии 1.65. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279117,279121#msg-279121 From mdounin на mdounin.ru Tue Mar 20 16:12:23 2018 From: mdounin на mdounin.ru (Maxim Dounin) Date: Tue, 20 Mar 2018 19:12:23 +0300 Subject: nginx-1.13.10 Message-ID: <20180320161223.GG77253@mdounin.ru> Изменения в nginx 1.13.10 20.03.2018 *) Добавление: теперь параметр set в SSI-директиве include позволяет сохранять в переменную любые ответы; максимальный размер ответа задаётся директивой subrequest_output_buffer_size. *) Добавление: теперь nginx использует вызов clock_gettime(CLOCK_MONOTONIC), если он доступен, что позволяет избежать некорректного срабатывания таймаутов при изменениях системного времени. *) Добавление: параметр "escape=none" директивы log_format. Спасибо Johannes Baiter и Calin Don. *) Добавление: переменная $ssl_preread_alpn_protocols в модуле ngx_stream_ssl_preread_module. *) Добавление: модуль ngx_http_grpc_module. *) Исправление: в обработке ошибок выделения памяти в директиве geo. *) Исправление: при использовании переменных в директиве auth_basic_user_file в лог мог выводиться символ '\0'. Спасибо Вадиму Филимонову. -- Maxim Dounin http://nginx.org/ From nginx-forum на forum.nginx.org Wed Mar 21 12:40:35 2018 From: nginx-forum на forum.nginx.org (Saytik) Date: Wed, 21 Mar 2018 08:40:35 -0400 Subject: concurrent streams exceeded 128 while processing HTTP/2 connection Message-ID: Периодически при отправке POST запроса с мобильного приложения запрос длится 60 секунд и по таймауту с кодом 408 заканчивается. При этом в одну секунду создается много запросов одинаковых с кодом 408. Со стороны мобильного приложения это заполнение анекты или загрузка фотографии. Добавив debug в логе ошибок куча следующих ошибок: [info] 6580#6580: *10188395 concurrent streams exceeded 128 while processing HTTP/2 connection, client: , server: 0.0.0.0:443 и вот как раз куча ошибок с одинаковым ИПом клиента и в одну секунду. Есть параметр http2_max_concurrent_streams который по умолчанию 128. Есть місли почему забывается 128 активных стримов, почему так происходит ? Понятно что скорее всего надо увеличить http2_max_concurrent_streams, но понять бы что вообще происходит и почему в одну секунду столько запросов одинаковых создается # nginx -V nginx version: nginx/1.12.2 built by gcc 6.3.0 20170516 (Debian 6.3.0-18) built with OpenSSL 1.1.0f 25 May 2017 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.12.2/debian/debuild-base/nginx-1.12.2=. -specs=/usr/share/dpkg/no-pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-specs=/usr/share/dpkg/no-pie-link.specs -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279139,279139#msg-279139 From mdounin на mdounin.ru Wed Mar 21 13:43:38 2018 From: mdounin на mdounin.ru (Maxim Dounin) Date: Wed, 21 Mar 2018 16:43:38 +0300 Subject: concurrent streams exceeded 128 while processing HTTP/2 connection In-Reply-To: References: Message-ID: <20180321134338.GN77253@mdounin.ru> Hello! On Wed, Mar 21, 2018 at 08:40:35AM -0400, Saytik wrote: > Периодически при отправке POST запроса с мобильного приложения > запрос длится 60 секунд и по таймауту с кодом 408 заканчивается. > При этом в одну секунду создается много запросов одинаковых с > кодом 408. > > Со стороны мобильного приложения это заполнение анекты или загрузка > фотографии. > > Добавив debug в логе ошибок куча следующих ошибок: > > [info] 6580#6580: *10188395 concurrent streams exceeded 128 while > processing HTTP/2 connection, client: , server: 0.0.0.0:443 > и вот как раз куча ошибок с одинаковым ИПом клиента и в одну > секунду. > > Есть параметр http2_max_concurrent_streams который по умолчанию 128. > > Есть місли почему забывается 128 активных стримов, почему так > происходит ? Понятно что скорее всего надо увеличить > http2_max_concurrent_streams, но понять бы что вообще происходит и > почему в одну секунду столько запросов одинаковых создается Скорее всего проблема в библиотеке, которую использует мобиольное приложение. -- Maxim Dounin http://mdounin.ru/ From nginx-forum на forum.nginx.org Wed Mar 21 14:27:08 2018 From: nginx-forum на forum.nginx.org (Saytik) Date: Wed, 21 Mar 2018 10:27:08 -0400 Subject: concurrent streams exceeded 128 while processing HTTP/2 connection In-Reply-To: <20180321134338.GN77253@mdounin.ru> References: <20180321134338.GN77253@mdounin.ru> Message-ID: <1f99a2fd5b89031fcfdf5cd703cc3141.NginxMailingListRussian@forum.nginx.org> Спасибо за ответ. Судя по всему так и есть. версия okhttp ниже 3.3 хотя там правки с версии 3.3 OkHttp 3.3 will be compatible with nginx 1.9.15 OkHttp 3.2 doesn't recover from REFUSED_STREAM in HTTP/2. Fix: Upgrade to OkHttp 3.3 which recovers from a REFUSED_STREAM. осталось выкатить обновления. Еще раз спасибо за ответ, если не поможет обновление версии вернусь :-) Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279139,279141#msg-279141 From nginx-forum на forum.nginx.org Wed Mar 21 22:35:59 2018 From: nginx-forum на forum.nginx.org (gz) Date: Wed, 21 Mar 2018 18:35:59 -0400 Subject: =?UTF-8?B?0J/RgNC+0YbQtdGB0YHQuNC90LMg0L/QtdGA0LXQvNC10L3QvdGL0YUg0YHRgtGA?= =?UTF-8?B?0L7QutC4?= Message-ID: <0cb6996534ca58b7f7550cc3f2ba1a79.NginxMailingListRussian@forum.nginx.org> Подскажите пожалуйста, есть ли способ произвести замену переменных строки (например, в значении заголовка ответа, полученного от апстрима) на их значения? … set $var_1 one; set $var_2 two; … some_string_${var_1}_${var_2} → some_string_one_two Пока нашёл такое только в отдельных модулях, реализующих подобное в комплексе постобработки ответа апстрима. Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279146,279146#msg-279146 From chipitsine на gmail.com Thu Mar 22 04:20:45 2018 From: chipitsine на gmail.com (=?UTF-8?B?0JjQu9GM0Y8g0KjQuNC/0LjRhtC40L0=?=) Date: Thu, 22 Mar 2018 09:20:45 +0500 Subject: =?UTF-8?B?UmU6INCf0YDQvtGG0LXRgdGB0LjQvdCzINC/0LXRgNC10LzQtdC90L3Ri9GFINGB?= =?UTF-8?B?0YLRgNC+0LrQuA==?= In-Reply-To: <0cb6996534ca58b7f7550cc3f2ba1a79.NginxMailingListRussian@forum.nginx.org> References: <0cb6996534ca58b7f7550cc3f2ba1a79.NginxMailingListRussian@forum.nginx.org> Message-ID: попробуйте map http://nginx.org/ru/docs/http/ngx_http_map_module.html#map 22 марта 2018 г., 3:35 пользователь gz написал: > Подскажите пожалуйста, есть ли способ произвести замену переменных строки > (например, в значении заголовка ответа, полученного от апстрима) на их > значения? > > … > > set $var_1 one; > set $var_2 two; > > … > > some_string_${var_1}_${var_2} → some_string_one_two > > Пока нашёл такое только в отдельных модулях, реализующих подобное в > комплексе постобработки ответа апстрима. > > Posted at Nginx Forum: https://forum.nginx.org/read. > php?21,279146,279146#msg-279146 > > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dtyugaev на setonline.ru Thu Mar 22 11:41:33 2018 From: dtyugaev на setonline.ru (=?UTF-8?B?0KLRjtCz0LDQtdCyLCDQlNC80LjRgtGA0LjQuQ==?=) Date: Thu, 22 Mar 2018 14:41:33 +0300 Subject: =?UTF-8?B?0KDQtdC00LjRgNC10LrRgiDQuCDRgdC40LzQstC+0LsgIw==?= Message-ID: Здравствуйте! Скажите, пожалуйста, как сделать редирект вида /foobar -> /foobar#{arg1:value1} ? Такое правило вызывает зацикливание. rewrite ^/foobar$ '/foobar#{arg1:value1}' permanent; С уважением, Дмитрий Тюгаев ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From nginx на mva.name Thu Mar 22 11:57:31 2018 From: nginx на mva.name (Vadim A. Misbakh-Soloviov) Date: Thu, 22 Mar 2018 18:57:31 +0700 Subject: =?UTF-8?B?UmU6INCg0LXQtNC40YDQtdC60YIg0Lgg0YHQuNC80LLQvtC7ICM=?= In-Reply-To: References: Message-ID: <1788157.WC4yxujiZf@note> > Скажите, пожалуйста, как сделать редирект вида /foobar -> > /foobar#{arg1:value1} ? Никак (средствами веб-сервера). Всё, что после # - остаётся в браузере, и, максимум что его видит - фронтендовые скрипты. Т.о. если вам прямо очень хочется делать такой редирект (хотя редиректом тут даже не пахнет в силу специфики вышеозвученного), то делать его можно только на фронтенде. From m_nikita на bk.ru Thu Mar 22 12:54:33 2018 From: m_nikita на bk.ru (=?UTF-8?B?0J3QuNC60LjRgtCw?=) Date: Thu, 22 Mar 2018 15:54:33 +0300 Subject: =?UTF-8?B?0J/RgNC+0LHQu9C10LzQsCDQv9GA0Lgg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC4?= =?UTF-8?B?0LggcmV0dXJuINC4INC60LDRgdGC0L7QvNC90YvRhSDQvtGI0LjQsdC+0Log?= =?UTF-8?B?0L3QsCDRg9GA0L7QstC90LUgc2VydmVy?= Message-ID: <1521723273.3795309@f107.i.mail.ru> Добрый день.  При попытке сделать вернуть кастомный error_page на уровне сервера nginx возвращает  стандартную ошибку вместо моей html-ки. Вот конфиг: server { listen 80; server_name localhost; access_log /var/log/nginx/nginx-www-access.log logstash; location /plug.html { access_log /var/log/nginx/bot_permanent_plug.log logstash; root /usr/share/nginx/html/error_pages; } error_page 527 /plug.html; return 527; } Вот дебаг лог: https://pastebin.com/Zebuqtzt Как вернуть кастомную ошибку на уровне сервера? Спасибо.  -- Никита Маслянников ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From arozyev на nginx.com Thu Mar 22 14:03:01 2018 From: arozyev на nginx.com (Aziz Rozyev) Date: Thu, 22 Mar 2018 17:03:01 +0300 Subject: =?UTF-8?B?UmU6INCf0YDQvtCx0LvQtdC80LAg0L/RgNC4INC40YHQv9C+0LvRjNC30L7QstCw?= =?UTF-8?B?0L3QuNC4IHJldHVybiDQuCDQutCw0YHRgtC+0LzQvdGL0YUg0L7RiNC40LE=?= =?UTF-8?B?0L7QuiDQvdCwINGD0YDQvtCy0L3QtSBzZXJ2ZXI=?= In-Reply-To: <1521723273.3795309@f107.i.mail.ru> References: <1521723273.3795309@f107.i.mail.ru> Message-ID: если есть возможность привязаться к к/л стандартной ошибке, например, для 404: error_page 404 =527 /plugin.html а так в nginx кажется не предусмотрена ошибка 527. br, Aziz. > On 22 Mar 2018, at 15:54, Никита wrote: > > > Добрый день. > > При попытке сделать вернуть кастомный error_page на уровне сервера nginx возвращает стандартную ошибку вместо моей html-ки. > > Вот конфиг: > server { > listen 80; > server_name localhost; > > access_log /var/log/nginx/nginx-www-access.log logstash; > > location /plug.html { > access_log /var/log/nginx/bot_permanent_plug.log logstash; > root /usr/share/nginx/html/error_pages; > } > > error_page 527 /plug.html; > return 527; > } > > Вот дебаг лог: > > https://pastebin.com/Zebuqtzt > > Как вернуть кастомную ошибку на уровне сервера? > > Спасибо. > -- > Никита Маслянников > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru From mdounin на mdounin.ru Thu Mar 22 14:27:43 2018 From: mdounin на mdounin.ru (Maxim Dounin) Date: Thu, 22 Mar 2018 17:27:43 +0300 Subject: =?UTF-8?B?UmU6INCf0YDQvtCx0LvQtdC80LAg0L/RgNC4INC40YHQv9C+0LvRjNC30L7QstCw?= =?UTF-8?B?0L3QuNC4IHJldHVybiDQuCDQutCw0YHRgtC+0LzQvdGL0YUg0L7RiNC40LE=?= =?UTF-8?B?0L7QuiDQvdCwINGD0YDQvtCy0L3QtSBzZXJ2ZXI=?= In-Reply-To: References: <1521723273.3795309@f107.i.mail.ru> Message-ID: <20180322142743.GU77253@mdounin.ru> Hello! On Thu, Mar 22, 2018 at 05:03:01PM +0300, Aziz Rozyev wrote: > если есть возможность привязаться к к/л стандартной ошибке, например, для 404: > > error_page 404 =527 /plugin.html > > а так в nginx кажется не предусмотрена ошибка 527. Это не важно. Важно то, что при обработке внетреннего перенаправления перенаправления на /plug.html в соответствии с директивой error_page - будут выполнены инструкции модуля rewrite, написанные на уровне server{}: > > error_page 527 /plug.html; > > return 527; То есть снова случится return 527. Поскольку мы уже в процессе обработки ошибки - то nginx не будет пытаться снова куда-то перенаправить запрос в соответствии с директивой error_page, а вернёт стандартную ошибку. > > Как вернуть кастомную ошибку на уровне сервера? Попытка вернуть ошибку с собственным телом ответа с помощью безусловного "return 527" на уровне server - обречена не неудачу, потому что nginx не сможет это тело ответа вернуть. Проще всего делать return в location'е, отдельном от того, в котором собственно возвращается тело: error_page 527 /plug.html; location / { return 527; } location = /plug.html { # no return here } Можно также пытаться сделать return на уровне server{} условно, но смысла в этом обычно нет, использовать location'ы - проще и правильнее. -- Maxim Dounin http://mdounin.ru/ From nginx-forum на forum.nginx.org Thu Mar 22 15:11:19 2018 From: nginx-forum на forum.nginx.org (gz) Date: Thu, 22 Mar 2018 11:11:19 -0400 Subject: =?UTF-8?B?UmU6INCf0YDQvtGG0LXRgdGB0LjQvdCzINC/0LXRgNC10LzQtdC90L3Ri9GFINGB?= =?UTF-8?B?0YLRgNC+0LrQuA==?= In-Reply-To: References: Message-ID: <855d66340a969cbbee756f9af5a14387.NginxMailingListRussian@forum.nginx.org> > попробуйте map Не понимаю как map мне в этом поможет. Количество переменных в строке произвольное, даже если делать несколько замен с запасом несколькими картами, найдя имя переменной невозможно обратиться к ней — $$name не работает. Вы просто так предложили, или можете привести пример? Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279146,279160#msg-279160 From vbart на nginx.com Fri Mar 23 14:10:55 2018 From: vbart на nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Fri, 23 Mar 2018 17:10:55 +0300 Subject: =?UTF-8?B?0KDQtdC70LjQtyBVbml0IDAuNyBiZXRh?= Message-ID: <6018482.sMSN7A4qIK@vbart-workstation> Здравствуйте. Рад сообщить о выпуске новой бета-версии NGINX Unit с исправлением ряда ошибок и поддержкой Ruby/Rack. Теперь с помощью Unit можно легко запускать такие приложения, как, например, Redmine. Изменения в Unit 0.7 22.03.2017 *) Добавление: модуль Ruby. *) Исправление: в обнаружении модулей. *) Исправление: различные неопределённости параллелизма во время изменения конфигурации и при завершении. *) Исправление: символы табуляции и оконечные пробелы не допускались в значениях полей HTTP заголовка. *) Исправление: в Python модуле происходил segmentation fault, если start_response() вызывали вне контекста выполнения WSGI-обработчика. *) Исправление: в PHP модуле мог произойти segmentation fault, если на этапе инициализации случались ошибки. Пакеты для Linux и Docker-образы доступны по ссылкам: - Пакеты: https://unit.nginx.org/installation/#precompiled-packages - Docker: https://hub.docker.com/r/nginx/unit/tags/ Пакеты и Docker-образы с новым Ruby модулем будут собраны на следующей неделе. -- Валентин Бартенев From harrykas на gmail.com Fri Mar 23 14:15:51 2018 From: harrykas на gmail.com (Serhii Kharchenko) Date: Fri, 23 Mar 2018 16:15:51 +0200 Subject: cache_manager process waits 1 day to start working Message-ID: Доброго дня, Столкнулся с ситуацией, когда процесс "nginx: cache manager process" начинает что-то делать только через сутки после рестарта nginx'а. Целые сутки он потребляет очень мало RAM (чуть больше 3500kB), в strace по кругу следующее: --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} --- rt_sigreturn() = -1 EINTR (Interrupted system call) epoll_wait(7, 55b5d0d6bdc0, 512, -1) = -1 EINTR (Interrupted system call) --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} --- rt_sigreturn() = -1 EINTR (Interrupted system call) epoll_wait(7, 55b5d0d6bdc0, 512, -1) = -1 EINTR (Interrupted system call) Само собой, кеши за сутки распухают, никто не чистит устаревшие файлы. Через 24 часа (с небольшими копейками, минута-две) процесс начинает потреблять оперативку и довольно шустро вычищает старые файлы из кешей. И до следующего рестарта все ОК. Процесс "nginx: cache loader process" после рестарта аналогично ждет минуту, потом работает несколько минут и завершается. Директив proxy_cache_path на весь nginx несколько, с разным параметром inactive, есть даже с inactive=600. nginx-1.12.2, nginx-1.13.10 - подвержены "проблеме". Ни в документации, ни в коде, ни в гугле ничего пока по этому поводу не нашел. Просьба направить по правильному пути. Спасибо. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From igor на sysoev.ru Fri Mar 23 15:07:57 2018 From: igor на sysoev.ru (Igor Sysoev) Date: Fri, 23 Mar 2018 18:07:57 +0300 Subject: =?UTF-8?B?UmU6IG5naW54INC60L7QvdGE0LjQsyDQtNC70Y8g0LTQvtC80LXQvdCw?= In-Reply-To: References: Message-ID: > On 17 Mar 2018, at 12:52, iuerhiguerhg wrote: > > подскажите пожалуйста что прописать в location конфига домена чтоб при > запросе domain.com/1.html отдавало /var/www/www-root/25.html location = /1.html { alias /var/www/www-root/25.html; } -- Igor Sysoev http://nginx.com From mdounin на mdounin.ru Sun Mar 25 17:38:52 2018 From: mdounin на mdounin.ru (Maxim Dounin) Date: Sun, 25 Mar 2018 20:38:52 +0300 Subject: cache_manager process waits 1 day to start working In-Reply-To: References: Message-ID: <20180325173851.GC77253@mdounin.ru> Hello! On Fri, Mar 23, 2018 at 04:15:51PM +0200, Serhii Kharchenko wrote: > Доброго дня, > > Столкнулся с ситуацией, когда процесс "nginx: cache manager process" > начинает что-то делать только через сутки после рестарта nginx'а. > Целые сутки он потребляет очень мало RAM (чуть больше 3500kB), в strace по > кругу следующее: > --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} --- > rt_sigreturn() = -1 EINTR (Interrupted system call) > epoll_wait(7, 55b5d0d6bdc0, 512, -1) = -1 EINTR (Interrupted system call) > --- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} --- > rt_sigreturn() = -1 EINTR (Interrupted system call) > epoll_wait(7, 55b5d0d6bdc0, 512, -1) = -1 EINTR (Interrupted system call) > > Само собой, кеши за сутки распухают, никто не чистит устаревшие файлы. > > Через 24 часа (с небольшими копейками, минута-две) процесс начинает > потреблять оперативку и довольно шустро вычищает старые файлы из кешей. И > до следующего рестарта все ОК. > > Процесс "nginx: cache loader process" после рестарта аналогично ждет > минуту, потом работает несколько минут и завершается. Отмечу, что пауза в минуту перед началом работы cache loader'а, равно как и его завершения после загрузки кэшей - это нормально, так и должно быть. > Директив proxy_cache_path на весь nginx несколько, с разным параметром > inactive, есть даже с inactive=600. > > nginx-1.12.2, nginx-1.13.10 - подвержены "проблеме". > > Ни в документации, ни в коде, ни в гугле ничего пока по этому поводу не > нашел. > Просьба направить по правильному пути. В первую очередь имеет смысл убедиться, что из кэшей с inactive=600 действительно не удаляются ответы, к которым не обращались более 600 секунд. Потому что при перезапуске inactive начинает считаться от момента перезапуска, и кэши с очисткой по inactive будут ожидаемо расти до достижения времени inactive. Так что если у большей части кэшей inactive=1d, то будет наблюдаться как раз похожая на описанное картина. Если действительно установленное время inactive не выдерживается, то имеет смысл включить debug и посмотреть, что пишет cache manager. Кроме того: - если вдруг используются сторонние модули - стоит проверить без них; - басудя по strace - используется timer_resolution. Опять же, стоит проверить без. -- Maxim Dounin http://mdounin.ru/ From harrykas на gmail.com Mon Mar 26 09:26:38 2018 From: harrykas на gmail.com (Serhii Kharchenko) Date: Mon, 26 Mar 2018 12:26:38 +0300 Subject: cache_manager process waits 1 day to start working In-Reply-To: <20180325173851.GC77253@mdounin.ru> References: <20180325173851.GC77253@mdounin.ru> Message-ID: 25 марта 2018 г., 20:38 пользователь Maxim Dounin написал: > > В первую очередь имеет смысл убедиться, что из кэшей с > inactive=600 действительно не удаляются ответы, к которым не > обращались более 600 секунд. Потому что при перезапуске inactive > начинает считаться от момента перезапуска, и кэши с очисткой по > inactive будут ожидаемо расти до достижения времени inactive. Так > что если у большей части кэшей inactive=1d, то будет наблюдаться > как раз похожая на описанное картина. Всё работает, как вы и описали. Кеши с небольшим inactive и по объему мелкие - я их очистку просто в strace не замечал и потребление памяти особо не менялось. Но они чистятся нормально и вовремя. > при перезапуске inactive начинает считаться от момента перезапуска Собственно, это и есть ответ на мой вопрос. Есть ли какие-то варианты/хаки, чтобы перезапуск не сбрасывал отсчет inactive? Или inactive элемента кеша хранится только в RAM и записывается туда при запросе и при старте cache loader'ом? Видимо, надо решать проблему с другого конца и поднять proxy_cache_min_uses , ибо проявляется она на тяжелых кешах с большим inactive и огромным процентом файлов, которые редко запрашиваются. Спасибо! ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From mdounin на mdounin.ru Mon Mar 26 12:44:51 2018 From: mdounin на mdounin.ru (Maxim Dounin) Date: Mon, 26 Mar 2018 15:44:51 +0300 Subject: cache_manager process waits 1 day to start working In-Reply-To: References: <20180325173851.GC77253@mdounin.ru> Message-ID: <20180326124451.GD77253@mdounin.ru> Hello! On Mon, Mar 26, 2018 at 12:26:38PM +0300, Serhii Kharchenko wrote: > 25 марта 2018 г., 20:38 пользователь Maxim Dounin > написал: > > > при перезапуске inactive начинает считаться от момента перезапуска > Собственно, это и есть ответ на мой вопрос. > Есть ли какие-то варианты/хаки, чтобы перезапуск не сбрасывал отсчет > inactive? Или inactive элемента кеша хранится только в RAM и записывается > туда при запросе и при старте cache loader'ом? Именно так, время последнего обращения хранится только в памяти, и при перезапуске - сбрасывается. То есть, фактически, при использовании очистки по inactive стоит закладываться на то, что при перезапуске эффективное время inactive вырастет приблизительно в два раза, и соответственно же вырастет размер кэша. Наиболее простое решение - не перезапускать nginx, благо это не нужно ни для чего. В этом случае информация об inactive будет теряться только при обновлениях nginx'а. Кроме того, не стоит забывать, что nginx умеет чистить кэш также и по max_size. Это чуть менее правильно/эффективно с точки зрения cache manager'а, но обычно более удобно в администрировании, когда речь идёт о больших кэшах. -- Maxim Dounin http://mdounin.ru/ From drug на qwarta.ru Wed Mar 28 00:38:57 2018 From: drug на qwarta.ru (=?windows-1251?B?xPPj6O0g0eXw4+Xp?=) Date: Wed, 28 Mar 2018 03:38:57 +0300 Subject: =?UTF-8?B?0KXQvtGC0LXQuyDQsdGLINGB0LTQtdC70LDRgtGMINGC0LDQutC40LUg0L/RgNCw?= =?UTF-8?B?0LLQuNC70LAg0LTQu9GPIFNTTDo=?= Message-ID: <348607813.20180328033857@qwarta.ru> Здравствуйте. Хотел бы сделать такие правила для SSL: ssl_session_cache shared:TLS:10m; ssl_session_timeout 10m; ssl_stapling on; ssl_stapling_verify on; resolver 127.0.0.1; ssl_prefer_server_ciphers on; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; if ($ssl_protocol ~* 'TLSv1.2') { ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:RC4-MD5:AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA; } if ($ssl_protocol ~* 'TLSv1.1') { ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:RC4-MD5:AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA; } if ($ssl_protocol ~* 'TLSv1') { ssl_ciphers ECDHE-RSA-AES256-SHA:RC4-MD5:AES128-SHA:DHE-RSA-AES256-SHA:AES256-SHA:DES-CBC3-SHA:RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA; } if ($ssl_protocol ~* 'SSLv3') { ssl_ciphers ECDHE-RSA-AES256-SHA:RC4-MD5:AES256-SHA:AES128-SHA:RC4-SHA; } Основная мысль на свой протокол выдавать свой список шифров, но ssl_ciphers нельзя использовать в if условии получаю такую ошибку: nginx: [emerg] "ssl_ciphers" directive is not allowed here in /etc/nginx/nginx.conf:77 Подскажите как можно сделать свой порядок шифров на свой протокол? -- С уважением, Дугин Сергей mailto:drug на qwarta.ru QWARTA From mdounin на mdounin.ru Wed Mar 28 12:58:03 2018 From: mdounin на mdounin.ru (Maxim Dounin) Date: Wed, 28 Mar 2018 15:58:03 +0300 Subject: =?UTF-8?B?UmU6INCl0L7RgtC10Lsg0LHRiyDRgdC00LXQu9Cw0YLRjCDRgtCw0LrQuNC1INC/?= =?UTF-8?B?0YDQsNCy0LjQu9CwINC00LvRjyBTU0w6?= In-Reply-To: <348607813.20180328033857@qwarta.ru> References: <348607813.20180328033857@qwarta.ru> Message-ID: <20180328125803.GK77253@mdounin.ru> Hello! On Wed, Mar 28, 2018 at 03:38:57AM +0300, Дугин Сергей wrote: > Хотел бы сделать такие правила для SSL: > > ssl_session_cache shared:TLS:10m; > ssl_session_timeout 10m; > ssl_stapling on; > ssl_stapling_verify on; > resolver 127.0.0.1; > ssl_prefer_server_ciphers on; > ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; > > if ($ssl_protocol ~* 'TLSv1.2') > { > ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:RC4-MD5:AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA; > } > if ($ssl_protocol ~* 'TLSv1.1') > { > ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:RC4-MD5:AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA; > } > if ($ssl_protocol ~* 'TLSv1') > { > ssl_ciphers ECDHE-RSA-AES256-SHA:RC4-MD5:AES128-SHA:DHE-RSA-AES256-SHA:AES256-SHA:DES-CBC3-SHA:RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA; > } > if ($ssl_protocol ~* 'SSLv3') > { > ssl_ciphers ECDHE-RSA-AES256-SHA:RC4-MD5:AES256-SHA:AES128-SHA:RC4-SHA; > } > > Основная мысль на свой протокол выдавать свой список шифров, но > ssl_ciphers нельзя использовать в if условии получаю такую ошибку: > > nginx: [emerg] "ssl_ciphers" directive is not allowed here in /etc/nginx/nginx.conf:77 > > Подскажите как можно сделать свой порядок шифров на свой протокол? Никак. -- Maxim Dounin http://mdounin.ru/ From drug на qwarta.ru Wed Mar 28 16:06:05 2018 From: drug на qwarta.ru (=?utf-8?B?0JTRg9Cz0LjQvSDQodC10YDQs9C10Lk=?=) Date: Wed, 28 Mar 2018 19:06:05 +0300 Subject: =?UTF-8?B?UmU6INCl0L7RgtC10Lsg0LHRiyDRgdC00LXQu9Cw0YLRjCDRgtCw0LrQuNC1INC/?= =?UTF-8?B?0YDQsNCy0LjQu9CwINC00LvRjyBTU0w6?= In-Reply-To: <20180328125803.GK77253@mdounin.ru> References: <348607813.20180328033857@qwarta.ru> <20180328125803.GK77253@mdounin.ru> Message-ID: <129108275.20180328190605@qwarta.ru> Здравствуйте, Maxim. У того же яндекса, видно что есть свой порядок https://www.ssllabs.com/ssltest/analyze.html?d=m.market.yandex.ru&s=87.250.250.22&latest для SSL3 у них TLS_ECDHE_RSA_WITH_RC4_128_SHA TLS_RSA_WITH_RC4_128_SHA для для других протоколов другие совсем шифры. Вот цитата сотрудников яндекса "Наконец, для несчастных с Internet Explorer 6 на XP мы сохраняем шифры RC4 — других вариантов на этой платформе просто нет. При этом мы осознаем вероятность того, что этот шифр уязвим, поэтому доступен он только в случае хендшейка по протоколу SSLv3. Если клиент подключается с более современным протоколом — TLS 1.0, TLS 1.1 или TLS 1.2 — ciphersuite на основе RC4 не предлагается." Очень хотелось бы сделать похожее, но как ? В nginx+ есть такая возможность? и 28 марта 2018 г., 15:58:03: > Hello! > On Wed, Mar 28, 2018 at 03:38:57AM +0300, Дугин Сергей wrote: >> Хотел бы сделать такие правила для SSL: >> >> ssl_session_cache shared:TLS:10m; >> ssl_session_timeout 10m; >> ssl_stapling on; >> ssl_stapling_verify on; >> resolver 127.0.0.1; >> ssl_prefer_server_ciphers on; >> ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; >> >> if ($ssl_protocol ~* 'TLSv1.2') >> { >> ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:RC4-MD5:AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA; >> } >> if ($ssl_protocol ~* 'TLSv1.1') >> { >> ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:RC4-MD5:AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA; >> } >> if ($ssl_protocol ~* 'TLSv1') >> { >> ssl_ciphers ECDHE-RSA-AES256-SHA:RC4-MD5:AES128-SHA:DHE-RSA-AES256-SHA:AES256-SHA:DES-CBC3-SHA:RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA; >> } >> if ($ssl_protocol ~* 'SSLv3') >> { >> ssl_ciphers ECDHE-RSA-AES256-SHA:RC4-MD5:AES256-SHA:AES128-SHA:RC4-SHA; >> } >> >> Основная мысль на свой протокол выдавать свой список шифров, но >> ssl_ciphers нельзя использовать в if условии получаю такую ошибку: >> >> nginx: [emerg] "ssl_ciphers" directive is not allowed here in /etc/nginx/nginx.conf:77 >> >> Подскажите как можно сделать свой порядок шифров на свой протокол? > Никак. -- С уважением, Дугин Сергей mailto:drug на qwarta.ru QWARTA From mdounin на mdounin.ru Wed Mar 28 16:34:54 2018 From: mdounin на mdounin.ru (Maxim Dounin) Date: Wed, 28 Mar 2018 19:34:54 +0300 Subject: =?UTF-8?B?UmU6INCl0L7RgtC10Lsg0LHRiyDRgdC00LXQu9Cw0YLRjCDRgtCw0LrQuNC1INC/?= =?UTF-8?B?0YDQsNCy0LjQu9CwINC00LvRjyBTU0w6?= In-Reply-To: <129108275.20180328190605@qwarta.ru> References: <348607813.20180328033857@qwarta.ru> <20180328125803.GK77253@mdounin.ru> <129108275.20180328190605@qwarta.ru> Message-ID: <20180328163454.GM77253@mdounin.ru> Hello! On Wed, Mar 28, 2018 at 07:06:05PM +0300, Дугин Сергей wrote: > У того же яндекса, видно что есть свой порядок > https://www.ssllabs.com/ssltest/analyze.html?d=m.market.yandex.ru&s=87.250.250.22&latest > > для SSL3 у них > TLS_ECDHE_RSA_WITH_RC4_128_SHA > TLS_RSA_WITH_RC4_128_SHA > > для для других протоколов другие совсем шифры. > > Вот цитата сотрудников яндекса > "Наконец, для несчастных с Internet Explorer 6 на XP мы сохраняем > шифры RC4 — других вариантов на этой платформе просто нет. При этом мы > осознаем вероятность того, что этот шифр уязвим, поэтому доступен он > только в случае хендшейка по протоколу SSLv3. Если клиент подключается > с более современным протоколом — TLS 1.0, TLS 1.1 или TLS 1.2 — > ciphersuite на основе RC4 не предлагается." > > Очень хотелось бы сделать похожее, но как ? В Яндексе, AFAIK, для этого художественно патчат OpenSSL. Возможно, тут есть кто-то из Яндекса (Эльдар?), кто сможет рассказать подробнее. > В nginx+ есть такая возможность? Нет. -- Maxim Dounin http://mdounin.ru/ From nginx-forum на forum.nginx.org Thu Mar 29 14:27:37 2018 From: nginx-forum на forum.nginx.org (Goti) Date: Thu, 29 Mar 2018 10:27:37 -0400 Subject: Nginx + php-fpm Message-ID: <55c593c81a1dd62c0b154283eae31b17.NginxMailingListRussian@forum.nginx.org> Всем привет, php жрет всю память, не могу понять почему ... Конфиг: server { listen 80 default_server; listen [::]:80 default_server; server_name _; location / { root /var/www/html/dist/; } location /search/ { proxy_method GET; proxy_pass http://172.18.0.4:9200/index/index/_search$args; } location ~ /api/(.+)$ { fastcgi_pass unix:/run/php/php7.1-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /var/www/html/backend/web/app.php; fastcgi_param SCRIPT_NAME /app.php; fastcgi_param REQUEST_URI /$uri?$args; } } Вот лог: 2018/03/29 13:26:53 [error] 295#295: *3 FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 20480 bytes) in /var/www/html/backend/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 107 PHP message: PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 20480 bytes) in /var/www/html/backend/vendor/symfony/symfony/src/Symfony/Component/Debug/ErrorHandler.php on line 626" while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET /api/user/login-check HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "localhost" В чем может быть проблема ? Posted at Nginx Forum: https://forum.nginx.org/read.php?21,279235,279235#msg-279235 From medvedev.yp на gmail.com Thu Mar 29 14:31:29 2018 From: medvedev.yp на gmail.com (Iurii Medvedev) Date: Thu, 29 Mar 2018 14:31:29 +0000 Subject: Nginx + php-fpm In-Reply-To: <55c593c81a1dd62c0b154283eae31b17.NginxMailingListRussian@forum.nginx.org> References: <55c593c81a1dd62c0b154283eae31b17.NginxMailingListRussian@forum.nginx.org> Message-ID: В нехватке памяти, нужно проверить настройки php, nginx тут не причём On Thu, Mar 29, 2018 at 6:27 PM Goti wrote: > Всем привет, php жрет всю память, не могу понять почему ... > Конфиг: > server { > listen 80 default_server; > listen [::]:80 default_server; > > server_name _; > > location / { > root /var/www/html/dist/; > } > > location /search/ { > proxy_method GET; > proxy_pass http://172.18.0.4:9200/index/index/_search$args > ; > } > > location ~ /api/(.+)$ { > fastcgi_pass unix:/run/php/php7.1-fpm.sock; > > include fastcgi_params; > fastcgi_param SCRIPT_FILENAME > /var/www/html/backend/web/app.php; > fastcgi_param SCRIPT_NAME /app.php; > fastcgi_param REQUEST_URI /$uri?$args; > } > } > > > > Вот лог: > 2018/03/29 13:26:53 [error] 295#295: *3 FastCGI sent in stderr: "PHP > message: PHP Fatal error: Allowed memory size of 1073741824 bytes > exhausted > (tried to allocate 20480 bytes) in > > /var/www/html/backend/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php > on line 107 > PHP message: PHP Fatal error: Allowed memory size of 1073741824 bytes > exhausted (tried to allocate 20480 bytes) in > > /var/www/html/backend/vendor/symfony/symfony/src/Symfony/Component/Debug/ErrorHandler.php > on line 626" while reading response header from upstream, client: > 127.0.0.1, > server: _, request: "GET /api/user/login-check HTTP/1.1", upstream: > "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "localhost" > > > > В чем может быть проблема ? > > Posted at Nginx Forum: > https://forum.nginx.org/read.php?21,279235,279235#msg-279235 > > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -- With best wishes Iurii Medvedev ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From nginx-forum на forum.nginx.org Thu Mar 29 14:40:41 2018 From: nginx-forum на forum.nginx.org (Goti) Date: Thu, 29 Mar 2018 10:40:41 -0400 Subject: Nginx + php-fpm In-Reply-To: References: Message-ID: <372839d335e15879dfeaaaf26d7c7df1.NginxMailingListRussian@forum.nginx.org> В конфиге memory_limit увеличен до 1024M на машине разработчика все отлично работает, но и работает через Apache2 Posted at Nginx Forum: https://forum.nginx.org/read.php?21,238282,279237#msg-279237 From annulen на yandex.ru Thu Mar 29 14:42:49 2018 From: annulen на yandex.ru (Konstantin Tokarev) Date: Thu, 29 Mar 2018 17:42:49 +0300 Subject: Nginx + php-fpm In-Reply-To: <372839d335e15879dfeaaaf26d7c7df1.NginxMailingListRussian@forum.nginx.org> References: <372839d335e15879dfeaaaf26d7c7df1.NginxMailingListRussian@forum.nginx.org> Message-ID: <5458971522334569@web28g.yandex.ru> 29.03.2018, 17:40, "Goti" : > В конфиге memory_limit увеличен до 1024M на машине разработчика все отлично > работает, но и работает через Apache2 через Apache с php-fpm работает? > > Posted at Nginx Forum: https://forum.nginx.org/read.php?21,238282,279237#msg-279237 > > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru -- Regards, Konstantin From nginx-forum на forum.nginx.org Thu Mar 29 14:45:15 2018 From: nginx-forum на forum.nginx.org (Goti) Date: Thu, 29 Mar 2018 10:45:15 -0400 Subject: Nginx + php-fpm In-Reply-To: <5458971522334569@web28g.yandex.ru> References: <5458971522334569@web28g.yandex.ru> Message-ID: <1d4d5412bf919170b0c73fe6ba0e790e.NginxMailingListRussian@forum.nginx.org> Нет Posted at Nginx Forum: https://forum.nginx.org/read.php?21,238282,279239#msg-279239 From nginx-forum на forum.nginx.org Thu Mar 29 14:46:46 2018 From: nginx-forum на forum.nginx.org (Goti) Date: Thu, 29 Mar 2018 10:46:46 -0400 Subject: Nginx + php-fpm In-Reply-To: <5458971522334569@web28g.yandex.ru> References: <5458971522334569@web28g.yandex.ru> Message-ID: <1d74987a6e1149b5bdb3ed1487dec81c.NginxMailingListRussian@forum.nginx.org> Konstantin Tokarev Wrote: ------------------------------------------------------- > 29.03.2018, 17:40, "Goti" : > > В конфиге memory_limit увеличен до 1024M на машине разработчика все > отлично > > работает, но и работает через Apache2 > > через Apache с php-fpm работает? > > > > > Posted at Nginx Forum: > https://forum.nginx.org/read.php?21,238282,279237#msg-279237 > > > > _______________________________________________ > > nginx-ru mailing list > > nginx-ru на nginx.org > > http://mailman.nginx.org/mailman/listinfo/nginx-ru > > -- > Regards, > Konstantin > > _______________________________________________ > nginx-ru mailing list > nginx-ru на nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru Нет, увеличить лимит еше, и посмотреть что будет ? Posted at Nginx Forum: https://forum.nginx.org/read.php?21,238282,279240#msg-279240 From vbart на nginx.com Thu Mar 29 21:06:08 2018 From: vbart на nginx.com (=?utf-8?B?0JLQsNC70LXQvdGC0LjQvSDQkdCw0YDRgtC10L3QtdCy?=) Date: Fri, 30 Mar 2018 00:06:08 +0300 Subject: Nginx + php-fpm In-Reply-To: <372839d335e15879dfeaaaf26d7c7df1.NginxMailingListRussian@forum.nginx.org> References: <372839d335e15879dfeaaaf26d7c7df1.NginxMailingListRussian@forum.nginx.org> Message-ID: <2186242.qE4i092MEK@vbart-laptop> On Thursday, 29 March 2018 17:40:41 MSK Goti wrote: > В конфиге memory_limit увеличен до 1024M на машине разработчика все отлично > работает, но и работает через Apache2 > На машине разработчика точно такие же запросы один в один и те же самые данные? -- Валентин Бартенев From nginx-forum на forum.nginx.org Fri Mar 30 06:06:45 2018 From: nginx-forum на forum.nginx.org (Goti) Date: Fri, 30 Mar 2018 02:06:45 -0400 Subject: Nginx + php-fpm In-Reply-To: <2186242.qE4i092MEK@vbart-laptop> References: <2186242.qE4i092MEK@vbart-laptop> Message-ID: На машине разработчика стоит Apache2 + php, на "сервере" Nginx + php-fpm, в качестве "сервера" docker, сервер чистый(данных нет) Posted at Nginx Forum: https://forum.nginx.org/read.php?21,238282,279248#msg-279248 From iippolitov на nginx.com Fri Mar 30 14:00:34 2018 From: iippolitov на nginx.com (Igor A. Ippolitov) Date: Fri, 30 Mar 2018 17:00:34 +0300 Subject: =?UTF-8?B?UmU6INCl0L7RgtC10Lsg0LHRiyDRgdC00LXQu9Cw0YLRjCDRgtCw0LrQuNC1INC/?= =?UTF-8?B?0YDQsNCy0LjQu9CwINC00LvRjyBTU0w6?= In-Reply-To: <129108275.20180328190605@qwarta.ru> References: <348607813.20180328033857@qwarta.ru> <20180328125803.GK77253@mdounin.ru> <129108275.20180328190605@qwarta.ru> Message-ID: Сергей, Если очень нужно, есть вариант использовать stream модуль для определения протокола, который хочет/может клиент. И в зависимости от клиента уже проксировать в разные бэкенды, где терминировать SSL. Вариантов как это сделать два: 1) можно запатчить ssl preread, чтобы он экспортил переменные с протоколом. Теоретически, патч будет несложным (client hello уже разбирается для получения SNI) 2) с помощью nsj попарсить поступающие данные, чтобы установить переменную, по которой определить бэкенд ( http://nginx.org/ru/docs/stream/ngx_stream_js_module.html#js_preread ) Оба вариант, скажем,  далеки от идеала, но результата достичь позволяют. On 28.03.2018 19:06, Дугин Сергей wrote: > Здравствуйте, Maxim. > > У того же яндекса, видно что есть свой порядок > https://www.ssllabs.com/ssltest/analyze.html?d=m.market.yandex.ru&s=87.250.250.22&latest > > для SSL3 у них > TLS_ECDHE_RSA_WITH_RC4_128_SHA > TLS_RSA_WITH_RC4_128_SHA > > для для других протоколов другие совсем шифры. > > Вот цитата сотрудников яндекса > "Наконец, для несчастных с Internet Explorer 6 на XP мы сохраняем > шифры RC4 — других вариантов на этой платформе просто нет. При этом мы > осознаем вероятность того, что этот шифр уязвим, поэтому доступен он > только в случае хендшейка по протоколу SSLv3. Если клиент подключается > с более современным протоколом — TLS 1.0, TLS 1.1 или TLS 1.2 — > ciphersuite на основе RC4 не предлагается." > > Очень хотелось бы сделать похожее, но как ? > > > В nginx+ есть такая возможность? > > > и 28 марта 2018 г., 15:58:03: > >> Hello! >> On Wed, Mar 28, 2018 at 03:38:57AM +0300, Дугин Сергей wrote: >>> Хотел бы сделать такие правила для SSL: >>> >>> ssl_session_cache shared:TLS:10m; >>> ssl_session_timeout 10m; >>> ssl_stapling on; >>> ssl_stapling_verify on; >>> resolver 127.0.0.1; >>> ssl_prefer_server_ciphers on; >>> ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; >>> >>> if ($ssl_protocol ~* 'TLSv1.2') >>> { >>> ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:RC4-MD5:AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA; >>> } >>> if ($ssl_protocol ~* 'TLSv1.1') >>> { >>> ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:RC4-MD5:AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA; >>> } >>> if ($ssl_protocol ~* 'TLSv1') >>> { >>> ssl_ciphers ECDHE-RSA-AES256-SHA:RC4-MD5:AES128-SHA:DHE-RSA-AES256-SHA:AES256-SHA:DES-CBC3-SHA:RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA; >>> } >>> if ($ssl_protocol ~* 'SSLv3') >>> { >>> ssl_ciphers ECDHE-RSA-AES256-SHA:RC4-MD5:AES256-SHA:AES128-SHA:RC4-SHA; >>> } >>> >>> Основная мысль на свой протокол выдавать свой список шифров, но >>> ssl_ciphers нельзя использовать в if условии получаю такую ошибку: >>> >>> nginx: [emerg] "ssl_ciphers" directive is not allowed here in /etc/nginx/nginx.conf:77 >>> >>> Подскажите как можно сделать свой порядок шифров на свой протокол? >> Никак. > > > From arut на nginx.com Fri Mar 30 15:22:13 2018 From: arut на nginx.com (Roman Arutyunyan) Date: Fri, 30 Mar 2018 18:22:13 +0300 Subject: =?UTF-8?B?UmU6INCl0L7RgtC10Lsg0LHRiyDRgdC00LXQu9Cw0YLRjCDRgtCw0LrQuNC1INC/?= =?UTF-8?B?0YDQsNCy0LjQu9CwINC00LvRjyBTU0w6?= In-Reply-To: References: <348607813.20180328033857@qwarta.ru> <20180328125803.GK77253@mdounin.ru> <129108275.20180328190605@qwarta.ru> Message-ID: <20180330152213.GH89834@Romans-MacBook-Air.local> On Fri, Mar 30, 2018 at 05:00:34PM +0300, Igor A. Ippolitov wrote: > Сергей, > > Если очень нужно, есть вариант использовать stream модуль для определения > протокола, который хочет/может клиент. > И в зависимости от клиента уже проксировать в разные бэкенды, где > терминировать SSL. > > Вариантов как это сделать два: > 1) можно запатчить ssl preread, чтобы он экспортил переменные с протоколом. > Теоретически, патч будет несложным (client hello уже разбирается для > получения SNI) Вот примерный патч, парсящий версию протокола в ssl_preread. [..] -- Roman Arutyunyan ----------- следущая часть ----------- # HG changeset patch # User Roman Arutyunyan # Date 1522420772 -10800 # Fri Mar 30 17:39:32 2018 +0300 # Node ID 471f32ce0d8250a0fced5290796713b03d7d08d7 # Parent 416953ef04286401354000f624ad5561ca1ade57 Stream ssl_preread: $ssl_preread_protocol variable. The variable keeps the highest SSL protocol version number supported by the client. The format is compatible with the $ssl_protocol variable. For TLSv1.3 the list of SSL protocol versions supported by the client are passed in the "supported_versions" extension not handled by this implementation. The version returned by $ssl_preread_protocol will likely be TLSv1.2 in this case. diff --git a/src/stream/ngx_stream_ssl_preread_module.c b/src/stream/ngx_stream_ssl_preread_module.c --- a/src/stream/ngx_stream_ssl_preread_module.c +++ b/src/stream/ngx_stream_ssl_preread_module.c @@ -21,6 +21,7 @@ typedef struct { u_char *pos; u_char *dst; u_char buf[4]; + u_char version[2]; ngx_str_t host; ngx_str_t alpn; ngx_log_t *log; @@ -32,6 +33,8 @@ typedef struct { static ngx_int_t ngx_stream_ssl_preread_handler(ngx_stream_session_t *s); static ngx_int_t ngx_stream_ssl_preread_parse_record( ngx_stream_ssl_preread_ctx_t *ctx, u_char *pos, u_char *last); +static ngx_int_t ngx_stream_ssl_preread_protocol_variable( + ngx_stream_session_t *s, ngx_stream_variable_value_t *v, uintptr_t data); static ngx_int_t ngx_stream_ssl_preread_server_name_variable( ngx_stream_session_t *s, ngx_stream_variable_value_t *v, uintptr_t data); static ngx_int_t ngx_stream_ssl_preread_alpn_protocols_variable( @@ -86,6 +89,9 @@ ngx_module_t ngx_stream_ssl_preread_mod static ngx_stream_variable_t ngx_stream_ssl_preread_vars[] = { + { ngx_string("ssl_preread_protocol"), NULL, + ngx_stream_ssl_preread_protocol_variable, 0, 0, 0 }, + { ngx_string("ssl_preread_server_name"), NULL, ngx_stream_ssl_preread_server_name_variable, 0, 0, 0 }, @@ -196,7 +202,8 @@ ngx_stream_ssl_preread_parse_record(ngx_ enum { sw_start = 0, sw_header, /* handshake msg_type, length */ - sw_head_tail, /* version, random */ + sw_version, /* client_version */ + sw_random, /* random */ sw_sid_len, /* session_id length */ sw_sid, /* session_id */ sw_cs_len, /* cipher_suites length */ @@ -254,13 +261,19 @@ ngx_stream_ssl_preread_parse_record(ngx_ return NGX_DECLINED; } - state = sw_head_tail; - dst = NULL; - size = 34; + state = sw_version; + dst = ctx->version; + size = 2; left = (p[1] << 16) + (p[2] << 8) + p[3]; break; - case sw_head_tail: + case sw_version: + state = sw_random; + dst = NULL; + size = 32; + break; + + case sw_random: state = sw_sid_len; dst = p; size = 1; @@ -454,6 +467,55 @@ ngx_stream_ssl_preread_parse_record(ngx_ static ngx_int_t +ngx_stream_ssl_preread_protocol_variable(ngx_stream_session_t *s, + ngx_variable_value_t *v, uintptr_t data) +{ + ngx_str_t version; + ngx_stream_ssl_preread_ctx_t *ctx; + + ctx = ngx_stream_get_module_ctx(s, ngx_stream_ssl_preread_module); + + if (ctx == NULL) { + v->not_found = 1; + return NGX_OK; + } + + /* SSL_get_version() format */ + + ngx_str_null(&version); + + switch (ctx->version[0]) { + case 2: + ngx_str_set(&version, "SSLv2"); + break; + case 3: + switch (ctx->version[1]) { + case 0: + ngx_str_set(&version, "SSLv3"); + break; + case 1: + ngx_str_set(&version, "TLSv1"); + break; + case 2: + ngx_str_set(&version, "TLSv1.1"); + break; + case 3: + ngx_str_set(&version, "TLSv1.2"); + break; + } + } + + v->valid = 1; + v->no_cacheable = 0; + v->not_found = 0; + v->len = version.len; + v->data = version.data; + + return NGX_OK; +} + + +static ngx_int_t ngx_stream_ssl_preread_server_name_variable(ngx_stream_session_t *s, ngx_variable_value_t *v, uintptr_t data) { From mdounin на mdounin.ru Fri Mar 30 15:59:21 2018 From: mdounin на mdounin.ru (Maxim Dounin) Date: Fri, 30 Mar 2018 18:59:21 +0300 Subject: =?UTF-8?B?UmU6INCl0L7RgtC10Lsg0LHRiyDRgdC00LXQu9Cw0YLRjCDRgtCw0LrQuNC1INC/?= =?UTF-8?B?0YDQsNCy0LjQu9CwINC00LvRjyBTU0w6?= In-Reply-To: <20180330152213.GH89834@Romans-MacBook-Air.local> References: <348607813.20180328033857@qwarta.ru> <20180328125803.GK77253@mdounin.ru> <129108275.20180328190605@qwarta.ru> <20180330152213.GH89834@Romans-MacBook-Air.local> Message-ID: <20180330155921.GS77253@mdounin.ru> Hello! On Fri, Mar 30, 2018 at 06:22:13PM +0300, Roman Arutyunyan wrote: > On Fri, Mar 30, 2018 at 05:00:34PM +0300, Igor A. Ippolitov wrote: > > Сергей, > > > > Если очень нужно, есть вариант использовать stream модуль для определения > > протокола, который хочет/может клиент. > > И в зависимости от клиента уже проксировать в разные бэкенды, где > > терминировать SSL. > > > > Вариантов как это сделать два: > > 1) можно запатчить ssl preread, чтобы он экспортил переменные с протоколом. > > Теоретически, патч будет несложным (client hello уже разбирается для > > получения SNI) > > Вот примерный патч, парсящий версию протокола в ssl_preread. Слушайте, я всё понимаю, но смысла в этом - примерно никакого. [...] -- Maxim Dounin http://mdounin.ru/