Menu

Pomiędzy bitami

Techno, porno i duszno. Blog niezupełnie technologiczny.

Goodbye lighttpd

rozieblox

Do niedawna korzystałem na prywatnych gratach z lighttpd jako serwera WWW. Lekki, fajny, składnia pliku konfiguracyjnego powiedzmy perlowa, działał. Niby wszystko OK, ale... raczej nie jest wykorzystywany w różnych nowych projektach, jeśli ktoś daje narzędzia czy instrukcje, to raczej można się nie spodziewać znalezienia wersji dla lighttpd.

W międzyczasie troche bliżej miałem okazję zetknąć się z nginx i zrobił na mnie bardzo dobre wrażenie - dla kilku vhostów bardziej przejrzysty konfig, nieźle wspierany w dokumentacji różnych projektów (apache to to nie jest, ale jest dobrze). Gwoździem do trumny dla lighttpd okazał się brak wsparcia dla HTTP/2, a nawet brak planów w tym zakresie. I łatwość włączenia obsługi HTTP/2 na nginx - wystarczy jedna dyrektywa w pliku konfiguracyjnym (przy odpowiednio nowej wersji nginx - jest w backportach debianowych). Trochę na zasadzie "wykorzystać, nie wykorzystać, możliwość mieć można".

Nic dziwnego, że pojawił się pomysł przesiadki na prywatnych gratach z lighttpd na nginx. Brakowało motywacji, bo po pierwsze istniejąca wersja działała, po drugie konfiguracja była lekko zakręcona, po trzecie brak czasu. Ostatecznie któregoś razu zebrałem się, wymyśliłem, że uruchomię oba serwery WWW równolegle, na różnych portach i zrobię szybki benchmark lighttpd vs nginx. Który to benchmark oczywiście wykaże, że nginx jest szybszy i potwierdzi słuszność przesiadki[1]. ;-)

Jak już się zebrałem, to okazało się, że w sumie nie ma aż tak wielu rzeczy skonfigurowanych, a z wielu można/wypadałoby zrezygnować. Głównym wyzwaniem okazało się skonfigurowanie nginx tak, żeby HTTP słuchało na niestandardowym porcie i jednocześnie przekierowywało na HTTPS, również na niestandardowym porcie. Znalazłem rozwiązanie, ale machnąłem ręką - dziwne, nieprzystające do normalnego konfiga, a przydatne tylko na moment, przy benchmarku. Za to przydać się może ładny gotowiec do przekierowań z wersji z www na bez www i odwrotnie.

Przy okazji instalacji SSL dowiedziałem się, że w końcu istnieje oficjalna paczka z klientem Certbot dla certyfikatów SSL od Let's Encrypt w Jessie (trzeba skorzystać z backportów). Plus, strona daje gotowe instrukcje instalacji dla popularnego oprogramowania (znowu: nginx jest, lighttpd nie ma). Czyli w certyfikatach też został zrobiony porządek. Dla pamięci: znalazłem stronkę z gotowcem, jak uzyskać A+ na popularnym teście SSL. Nieco przestarzała, ale nadal przydatna.

W zasadzie poszło zaskakująco dobrze, najwięcej niespodzianek wyszło na rzeczach najprostszych - a to serwer nie kompresował treści (tu jest o włączaniu kompresji), a to był problem z przetwarzaniem skryptów PHP. W końcu jest sensowna obsługa haseł na dostęp do stron (ew. miałem to wcześniej zrobione słabo).

Z rzeczy, które powinny działać, a nie działają - HTTP/2. Nie wiem, czy bardziej kwestia konfiguracji, wersji nginx, czy Firefoksa, ale wg testu HTTP/2 działało, a w Firefoksie (i na niektórych testach, zapewne korzystają z Firefoksa) strona się nie otwierała. Na innych przeglądarkach działało OK, ale do czasu rozwiązania problemu wyłączam HTTP/2.

Ponieważ wygląda, że publiczne motywatory działają: następna w kolejce jest przesiadka z chronicle na pelican na Wattmeter. Robi dobre wrażenie i jest w Pythonie. ;-)


[1] Na przykładzie strony nextbike.tk i prostego testu przy pomocy ab -n 2000 -c 20 okazało się jednak, że różnicy większej niż błąd pomiaru nie ma. Być może kwestia wielkości małej wielkości pliku i narzutu na transmisję, być może kwestia obciążenia serwera, konfigi serwerów też nie były ani identyczne, ani optymalizowane. W każdym razie dla mnie szybciej nie będzie.

Komentarze (5)

Dodaj komentarz
  • Gość: [Sebastian] *.dynamic.chello.pl

    O! Pelican generuje poprawne źródło Atom/RSS i są gotowe skrypty dla Disqus. :)

  • Gość: [tomasz] *.neoplus.adsl.tpnet.pl

    Co do http/2 to polecam spróbować takie metody szyfrowania, gdyż z tego co kojarzę to zarówno sama lista jak i kolejność elementów miała znaczenie przy http/2, poniższa lista też potrafi wyciągnąć A+ w teście.

    ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;

  • rozieblox

    @Sebastian Poprawny RSS to skutek uboczny, raczej. Disqus - do tego wystarczył JS z tego co pamiętam, więc kwestia modyfikacji template'u, by działało gdziekolwiek, ale dzięki, nie: rozie.blox.pl/2014/05/Bez-Disqusji.html

    @tomasz Hm! Dzięki za trop, możliwe, że o metody szyfrowania właśnie chodzi. Bo przecież miałem działające HTTP/2 na nginx i na Firefox działało...

  • Gość: [GDR!] *.dynamic.chello.pl

    Config nginxa w porównaniu z lighttpd wydaje mi się taki nieelegancki. Przesiadka jeszcze przede mną, został właśnie jedyny prywatny serwer, za to z mnóstwem usług.

    Szkoda że lighttpd się skończył.

  • rozieblox

    @GDR! Mi się podoba, podobny jak w apache, podział na vhosty, czy też - bardziej - jego możliwość. W lighttpd miałem wszystko w jednym pliku (AFAIK nie da się inaczej?) i był chaos.

© Pomiędzy bitami
Blox.pl najciekawsze blogi w sieci