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ć:
- Tworzymy plik /etc/lighttpd/wp-rewrite.conf
- 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",
)
}