Lighttpd

Материал из MediaWiki
Перейти к навигации Перейти к поиску

Lighttpd — легковесный и простой в настройке веб-сервер. Конфигурационный файл — /etc/lighttpd/lighttpd.conf.

Виртуальные хосты


$HTTP["host"] == "example.com" {
    server.document-root = "/var/www/example
    …
}
$HTTP["host"] == "example2.com" {
    server.document-root = "/var/www/example2"
    …
}

Как сделать редирект на субдиректорию?


url.redirect = ( "^/$" => "/subfolder" )

Не забудьте удостовериться, что mod_redirect включён.

Как сменить кодировку?

Известная проблема Lighttpd. Прямого решения нет, но есть несколько костылей, например:

  1. Комментируем строчку include_shell "/usr/share/lighttpd/create-mime.assign.pl", отключив тем самым мешающий нам perl-скрипт.
  2. Дампим вывод скрипта в файл: perl /usr/share/lighttpd/create-mime.assign.pl | cat >>/etc/lighttpd/conf-available/dump.
  3. Прописываем нужную нам кодировку (заменяем ".htm" => "text/html", на ""text/html; charset=koi8-r", (вместо koi8-r подставьте нужную вам кодировку) и т. д.).
  4. Подключаем файл: include "conf-available/dump".

php-cgi сжирает слишком много памяти при работе через FastCGI

В /etc/lighttpd/conf-enabled/15-fastcgi-php.conf меняем параметры PHP_FCGI_CHILDREN и PHP_FCGI_MAX_REQUESTS на меньшие, в зависимости от нужд сайта. К примеру, со следующей конфигурацией работает «lorwiki.ru»:


"bin-environment" => (
    "PHP_FCGI_CHILDREN" => "2",
    "PHP_FCGI_MAX_REQUESTS" => "100"
),

Как сделать URL в MediaWiki человекочитабельными?

Следуем гайду — https://www.mediawiki.org/wiki/Manual:Short_URL/wiki/Page_title_--_Lighttpd_rewrite--root_access:


url.rewrite-if-not-file = ( 
    "^/wiki/(mw-)?config/?" => "$0",
    "^/wiki/([^?]*)(?:\?(.*))?" => "/w/index.php?title=$1&$2",
    "^/wiki/([^?]*)" => "/w/index.php?title=$1",
    "^/wiki$" => "/w/index.php", # to avoid 404 when the user types /wiki instead of /wiki/
)

В LocalSetting.php прописываем


$wgScriptPath = "http://example.com";
$wgScriptExtension = ".php";
$wgArticlePath = "/wiki/$1";
$wgUsePathInfo = true;

Разумеется, заменяем «example.com» своим доменом.

Не забудьте включить mod_rewrite (по умолчанию он отключен).

SSL-сертификаты


$SERVER["socket"] == ":443" {
        ssl.engine = "enable"
        ssl.pemfile = "/etc/lighttpd/cert.pem"
        ssl.ca-file = "/etc/lighttpd/intermediate.crt"
        server.name = "domain.ru"
        server.document-root = "/var/www"
}

Где /etc/lighttpd/cert.pem — путь к файлу, содержащему в себе ключ и сертификат (cat cert.crt ker.key > pem.pem), а /etc/lighttpd/intermediate.crt — путь к intermediate сертификату, если есть. В некоторых случаях их тоже приходится конкатенировать).

SNI


$SERVER["socket"] == ":443" {
        ssl.engine = "enable"
        ssl.pemfile = "/etc/lighttpd/domain.ru.pem"
        ssl.ca-file = "/etc/lighttpd/intermediate.crt"
        server.name = "domain.ru"
        server.document-root = "/var/www"
        $HTTP["host"] == "subdomain1.domain.ru" {
                ssl.pemfile = "/etc/lighttpd/subdomain1.pem"
                ssl.ca-file = "/etc/lighttpd/intermediate.crt"
                server.name = "subdomain1.domain.ru"
                server.document-root = "/var/www/subdomain1"
         }
        $HTTP["host"] == "subdomain2.domain.ru" {
                ssl.pemfile = "/etc/lighttpd/subdomain2.pem"
                ssl.ca-file = "/etc/lighttpd/intermediate.crt"
                server.name = "subdomain2.domain.ru.ru"
                server.document-root = "/var/www/subdomain2"
         }

}