Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Настройка Lighttpd, не выходит каменный цветок...  (Прочитано 2278 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Alex Gluck

  • Автор темы
  • Участник
  • *
  • Сообщений: 166
    • Просмотр профиля
Суть проблемы:

У нас есть:
1. Есть 2 локальные сети 192.168.0.0/24 и 192.168.1.0/24 и айпишники на сервере 192.168.0.1 и 192.168.1.1
2. Есть статический внешний айпишник 1.2.3.4 получаемый через pppoe.
3. Есть доменное имя example.ru.
4. Есть доменные имена test.example.ru, test1.example.ru и (example).example.ru
5. Есть доменное имя example1.ru.

Задача:
1. Отдавать на запрос по адресу http://192.168.0.1 и http://192.168.1.1 редирект на https://192.168.0.1 и https://192.168.1.1 соответственно используя при этом собственные сертификаты, самоподписанные разумеется.
2. Отдавать на запрос по адресу http://example.ru редирект на https://example.ru
3. Делать редиректы с любых http(s)://www.anyExampleHost.ru на http(s)://anyExampleHost.ru
4. Проксировать https://test.example.ru и https://test1.example.ru на сервер(а) в локальной сети 192.168.0.0/24 и для каждого домена использовать свой SSL сертификат(wildcard'a нет).
Я знаю про SNI и что с версии 1.4.24 он поддерживается в лайти. Моя версия лайти:
# lighttpd -V
lighttpd/1.4.30 (ssl) - a light and fast webserver

5. Проксировать example1.ru на сервер(а) в локальной сети 192.168.0.0/24
6. Использовать cgi только после прохождения web аутентификации построенной на htdigest, и только для доменов http://192.168.0.1, http://192.168.1.1, https://example.ru
7. Проходить web аутентификации построенной на htdigest для всех запросов, кроме http(s)://test1.example.ru и http(s)://example1.ru (LDAP сервера пока нету :( )
8. Для доменов третьего уровня которые явно не прописаны делать редирект http(s)://(example).example(1).ru http(s)://example(1).ru
9. При запросе по внешнему айпи адресу http(s)://1.2.3.4 должен быть редирект на http://example1.ru

Мой конфиг lighttpd:
# lighttpd configuration file
#
## modules to load
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules = (
        "mod_evasive",
        "mod_accesslog",
        "mod_rewrite",
        "mod_redirect",
#       "mod_alias",
        "mod_auth",
#       "mod_status",
#       "mod_setenv",
#       "mod_fastcgi",
        "mod_proxy",
#       "mod_simple_vhost",
        "mod_cgi",
#       "mod_ssi",
#       "mod_usertrack",
#       "mod_expire",
#       "mod_webdav",
        "mod_compress"
)

server.force-lowercase-filenames = "enable"
server.max-keep-alive-requests = 16
server.max-keep-alive-idle = 5
server.max-read-idle = 60
server.max-write-idle = 360
server.follow-symlink = "enable"
evasive.max-conns-per-ip = 10

## a static document-root
server.document-root = "/www/"

## send a different Server: header
## be nice and keep it at lighttpd
server.tag = "TestTest"

# force use of the "write" backend (closes: #2401)
server.network-backend = "write"

# Loging
server.errorlog = "/var/log/lighttpd/error.log"
accesslog.filename = "/var/log/lighttpd/lighttpd.access.log"
accesslog.format = "In %t this host:%h open adress:%v%U %a"
#debug.log-request-handling = "enable"
#debug.log-ssl-noise = "enable"
## files to check for if .../ is requested
index-file.names = ( "index.html" )

## This include files
#include "/etc/lighttpd/sites/*.conf"

### Module CGI for LuCi
cgi.execute-x-only = "enable"
#$HTTP["url"] =~ "^/cgi-bin/" { cgi.assign = ( "" => "" ) }

        #### auth module
        ## read authentification.txt for more info
        auth.debug = 0
        auth.backend = "htdigest"
        auth.backend.htdigest.userfile = "/etc/lighttpd.user"
        #auth.backend.plain.groupfile = "lighttpd.group"
        auth.require = ( "" =>
        ("method" => "digest",
        "realm" => "Need authorization",
        "require" => "valid-user" ) )



$SERVER["socket"] == ":80" {

   $HTTP["host"] =~ "^test\.example\.ru$" {
        proxy.server  = ( "" => ( "test.exmple.ru" => ( "host" => "192.168.0.101" ) ) )
   }

   accesslog.filename = "| grep -v -E '83.69.225.250|192.168.0.' >> /var/log/lighttpd/lighttpd.access.log"

   #Redirect all to ssl(HTTPS)
   $HTTP["host"] =~ "^www\.(.*)$" {
        url.redirect = ( "^/(.*)" => "https://%1/$1" )
   }

}

$SERVER["socket"] == ":443" {

### HTTPS enable
ssl.engine = "enable"
ssl.pemfile="/etc/lighttpd/cert/ssl.crt"

server.document-root = "/www/"

index-file.names = ( "index.html" )

$HTTP["url"] =~ "^/cgi-bin/" { cgi.assign = ( "" => "" ) }

accesslog.filename = "| grep -v -E '83.69.225.250|192.168.0.' >> /var/log/lighttpd/lighttpd.access.log"

    $HTTP["host"] =~ "^test2\.example\.ru$" {
        proxy.server  = ( "" => ( "test2.example.ru" => ( "host" => "192.168.0.101" ) ) )
        ssl.ca-file="/etc/lighttpd/cert/ca-certs.crt"
        ssl.pemfile="/etc/lighttpd/cert/ssl.crt"
        ssl.use-sslv3 = "enable"
        ssl.use-sslv2 = "disable"
}

    $HTTP["host"] =~ "^www\.(.*)$" {
        url.redirect = ( "^/(.*)" => "https://%1/$1" )
        ssl.ca-file="/etc/lighttpd/cert/ca-certs.crt"
        ssl.pemfile="/etc/lighttpd/cert/ssl.crt"
        ssl.use-sslv3 = "enable"
        ssl.use-sslv2 = "disable"
    }

}

mimetype.assign = (
       ".pdf"   => "application/pdf",
       ".class" => "application/octet-stream",
       ".pac"   => "application/x-ns-proxy-autoconfig",
       ".swf"   => "application/x-shockwave-flash",
       ".wav"   => "audio/x-wav",
       ".gif"   => "image/gif",
       ".jpg"   => "image/jpeg",
       ".jpeg"  => "image/jpeg",
       ".png"   => "image/png",
       ".svg"   => "image/svg+xml",
       ".css"   => "text/css",
       ".html"  => "text/html",
       ".htm"   => "text/html",
       ".js"    => "text/javascript",
       ".txt"   => "text/plain",
       ".dtd"   => "text/xml",
       ".xml"   => "text/xml"
       )


#### compress module
compress.cache-dir          = "/www/cache"
compress.allowed-encodings = ("bzip2", "gzip", "deflate")
compress.filetype           = (
"text/plain",
"text/html",
"application/pdf",
"application/octet-stream",
"application/x-ns-proxy-autoconfig",
"application/x-shockwave-flash",
"audio/x-wav",
"image/gif",
"image/jpeg",
"image/jpeg",
"image/png",
"image/svg+xml",
"text/css",
"text/html",
"text/html",
"text/javascript",
"text/plain",
"text/xml",
"text/xml"
)

В чём собственно проблема:

1. При запросах http://www.example.ru происходит редирект на https://example.ru но браузер пишет веб страница недоступна(редирект происходит без запроса аутентификации).
Сервер запускается от root(увы но надо, чтобы скрипты cgi выполнялись от root), все файлы в директории /www/ имеют владельца и группу root и права.
2. При запросах http://example.ru браузер пишет веб страница недоступна и ничего не происходит(даже запроса аутентификации).
3. Если в секции $SERVER["socket"] == ":443" не будет ssl.engine = "enable" ssl.pemfile="/etc/lighttpd/cert/ssl.crt" SSL не работает, так и должно быть?
4. Как сделать логи более подробными? А то сейчас там практически пусто.

Делаю для дома, для семьи, не для работы, а для обучения. Сертификаты бесплатные от startssl.com
Есть потребность в настройке именно этого веб-сервера. Проблема в том, что он взрывает мою логику. С удовольствием скурю на русском по regexp'aм в лайти годное руководство.
« Последнее редактирование: 02 Июля 2014, 04:46:00 от Alex Gluck »

 

Страница сгенерирована за 0.02 секунд. Запросов: 22.