Przesiadka na lighttpd

Przesiadka na lighttpd

Od jakiegoś czasu ta strona, oraz kilka innych pracuje w chmurze Amazonu . Na moje mikro potrzeby, pracuję tylko z Micro instancją na EC2 – mocy procesora zupełnie wystarcza, wąskim gardłem jest oczywiście RAM – 613MB. Wprawdzie ruch, który generuję w serwisie nie jest specjalnie wysoki, ale wiadomo – RAMu nigdy nie za dużo.

W ramach oszczędności postanowiłem wymienić starego tłustego kota o imieniu Apache, na coś lżejszego i szybszego – Lighttpd . Dodatkowo mod_php zamieniło się na fast_cgi i w sumie to wszystko.

Na razie nie zaobserwowałem żadnych problemów z działaniem poszczególnych usług, a jest i FengOffice i Piwik i kilka innych WordPressowych blogów. Wszystko chodzi “normalnie”, może odrobinę szybciej, ale nie przeprowadzałem żadnych szczegółowych testów.

Największą bolączką i problemem lighttp jest brak natywnego wsparcia dla .htaccess – w 90% chodzi jedynie o mod_rewrite, który jest pod lighttpd, ale rewrite’y trzeba przepisać specjalnie pod lighttpd. Kilka standardowych przykładów z mojego podwórka.

Lighttpd mod_rewrite dla WordPressa
Oczywiście wygooglałem to gdzieś, pozwolę sobie powtórzyć:

  1. Tworzymy plik /etc/lighttpd/wp-rewrite.conf
  2. Wrzucamy do niego regułki:
url.rewrite-once = (
  "^" + wpdir + "(wp-.+).*/?" => "$0",
  "^" + wpdir + "(sitemap.xml)" =>; "$0",
  "^" + wpdir + "(xmlrpc.php)" =>; "$0",
  "^" + wpdir + "keyword/([A-Za-z_0-9-])/?$" => wpdir + "index.php?keyword=$1",
  "^" + wpdir + "(.+)/?$" => wpdir + "index.php/$1"
)

i teraz możemy sobie warunkowo ładować rewrite’y dla WordPressa dla wielu domen:

$HTTP["host"] == "www.gex.pl" {
  var.wpdir = "/"
  include "wp-rewrite.conf"
}

Teraz coś lepszego: CodeIgniter, mod_rewrite i lighttpd

url.rewrite-once = (
  "/(.*)\.(.*)" => "$0",
  "/(css|files|img|js|images)/" => "$0",
  "^/([^.]+)$" => "/index.php/$1"
)

Wybitnie proste i działające

Kilka dodatkowych “snippetów”:

Przekierowanie stron bez WWW na www:

$HTTP["host"] == "gex.pl" {
url.redirect  = (
  "^/(.*)" => "https://www.gex.pl/$1",
)
}