обращение к dedicate server.document-root в lighttpd возвращает 404

У меня по умолчанию установлен lighttpd с server.document-root = /var/www/html

/etc/lighttpd/lighttpd. conf

server.modules = (
    "mod_indexfile",
    "mod_access",
    "mod_alias",
    "mod_redirect",
)

server.document-root        = "/var/www/html"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80

# strict parsing and normalization of URL for consistency and security
# https://redmine.lighttpd.net/projects/lighttpd/wiki/Server_http-parseoptsDetails
# (might need to explicitly set "url-path-2f-decode" = "disable"
#  if a specific application is encoding URLs inside url-path)
server.http-parseopts = (
  "header-strict"           => "enable",# default
  "host-strict"             => "enable",# default
  "host-normalize"          => "enable",# default
  "url-normalize-unreserved"=> "enable",# recommended highly
  "url-normalize-required"  => "enable",# recommended
  "url-ctrls-reject"        => "enable",# recommended
  "url-path-2f-decode"      => "enable",# recommended highly (unless breaks app)
 #"url-path-2f-reject"      => "enable",
  "url-path-dotseg-remove"  => "enable",# recommended highly (unless breaks app)
 #"url-path-dotseg-reject"  => "enable",
 #"url-query-20-plus"       => "enable",# consistency in query string
)

index-file.names            = ( "index.php", "index.html" )
url.access-deny             = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.conf.pl"
include "/etc/lighttpd/conf-enabled/*.conf"

#server.compat-module-load   = "disable"
server.modules += (
    "mod_compress",
    "mod_dirlisting",
    "mod_staticfile",
)

Затем у меня есть некоторые другие веб-страницы в /var/www/rss, которые должны обслуживаться при использовании https://myip/rss или при использовании https://rss.mydomain.dev. Поэтому я ввел этот конфиг

/etc/lighttpd/conf-enabled/20-tt-rss.conf

$HTTP["url"] =~ "^/rss/" {
    server.document-root = "/var/www/rss"
    dir-listing.activate = "disable"
    $HTTP["url"] =~ "^/rss/(locale|classes|schema|lock|utils|cache|templates|\.git)/" {
        url.access-deny = ( "" )
    }
    expire.url = (
        "/rss/css/" => "access plus 1 days",
        "/rss/images/" => "access plus 1 days",
        "/rss/js/" => "access plus 1 days",
        "/rss/feed-icons/" => "access plus 1 hours"
    )
} else $HTTP["host"] == "rss.mydomain.dev" {
    server.document-root = "/var/www/rss"
    dir-listing.activate = "disable"
    $HTTP["url"] =~ "rss.mydomain.com/(locale|classes|schema|lock|utils|cache|templates|\.git)/" {
        url.access-deny = ( "" )
    }
    expire.url = (
        "rss.mydomain.dev/css/" => "access plus 1 days",
        "rss.mydomain.dev/images/" => "access plus 1 days",
        "rss.mydomain.dev/js/" => "access plus 1 days",
        "rss.mydomain.dev/feed-icons/" => "access plus 1 hours"
    )   
}

При использовании http://myip/rss/ я получаю 404

404 error

При использовании http://rss.mydomain.dev я получаю "Placeholder page"

Placeholder page

Я явно что-то упускаю, но как новый пользователь lighttpd я не понимаю что.

2
задан 2 February 2021 в 11:57
1 ответ

переменные отладки lighttpd предоставляют подробные сведения о том, как lighttpd обрабатывает запрос, и могут быть вам полезны.

Еще один вариант — strace -s 1024 процесс lighttpd, сделать запрос и просмотреть доступ к файловой системе.

Обработка конфигурации lighttpd происходит процедурно, в порядке настройки. Если у вас есть несколько условий, которые устанавливают server.document-root, то последнее условие, которое соответствует запросу и устанавливает server.document-root, вступает в силу для . server.document.root. (глобальные настройки обрабатываются так, как если бы они были установлены первыми, независимо от того, где они появляются в конфигурации)

Хотя вы включили в вопрос свой lighttpd.conf, вы не включили полную конфигурацию. Попробуйте запустить lighttpd -f /etc/lighttpd/lighttpd.conf -p, чтобы распечатать полную конфигурацию.

Кроме того, неправильное использование: $HTTP["url"] =~ "rss.mydomain.com/(локаль|классы|схема|блокировка|утилиты|кэш|шаблоны|\.git)/" $HTTP["url"] — это декодированный и нормализованный URL-адрес. URL-адрес не включает полномочия ("rss.mydomain.com") Точно так же неправильно использовать expire.url с «rss.mydomain.dev».

0
ответ дан 10 July 2021 в 20:13

Теги

Похожие вопросы