solovyov.net

Caddy

Я за вебсервер для своїх персональних потреб маю Caddy. Мої друзі, які в курсі (тобто Діма) прозрівають з того, але я nginx почав юзати у 2005-му, коли йому ще року не було, бо я дуже люблю гострі відчуття. 🌶️ Ну й воно виправдало себе, правда? Я потім років 5 його впроваджував майже всюди замість апача (потім воно і так вже всюди було).

Так от, кадді подобається. Він, вочевидь, не буде nginx'ом по швидкості, як мінімум, бо написаний на Go — мові з автоматичним збиранням сміття — але ті % продуктивності мене аж ніяк не чіпляють. А зате що чіпляє дуже, так це автоматичний HTTPS. Ну просто кайф, нічого взагалі робити не треба, прописав новий домен і все поїхало. Однозначне покращення.

А вчора я натрапив на пост Саймона Уіллісона про паузу трафіку і це взагалі кайф. Я хотів таке у nginx'і, але натівно воно нічого не вміє, а у Саймона там посилання на готове рішення від Бейзкемпу на скриптах на Луа. Не хочу скрипти на Луа. :( А попереднє рішення, яке він згадує, від Braintree, взагалі на Python/Tornado. Капець, навіть дивно, чому нічого ще нема готового.

Історія така: в мене є якийсь невеличкий проєкт, скажімо paste.in.ua, і за ним запущений всього один процес. Це все через економію, не хочу я, щоб воно пам'ять два рази жерло, і один нормально справляється — окрім випадків, коли я зробив новий реліз. У цей момент я старий сервіс вимикаю, а новий запускаю — і це у кложі прямо займає якийсь час (добре хоч не годину ггг).

Так от, ці кілька секунд сервісу нема і nginx у таких випадках каже 503 Service Unavailable. І кадді каже щось схоже, але можна йому сказати отаке:

reverse_proxy localhost:5001 {
    lb_try_duration 10s
    lb_try_interval 1s
}

І тоді він 10 секунд буде тримати всі запити та чесно тикатися в бекенд. А за 10 секунд той встигає запуститися і тому виглядає все наче сайт просто повільно відкривався. Кайф.

(@ tg)