Установить другой Lighttpd vhost для внутренних клиентов локальной сети - возможно, требуется только RegEx ...? - PullRequest
1 голос
/ 24 февраля 2012

Я хочу, чтобы Lighttpd отображал другую страницу для внутренних клиентов и страницу по умолчанию для всех остальных.

Между этими двумя ссылками, у меня есть идеячто я хочу сделать, но не уверен в RegEx, мне нужно было бы ограничить клиентов, используя имя хоста [http://]192.168.0.?или [http://]192.168.?.?на другую страницу.Я использовал следующий код в lighttpd.conf:

server.document-root       = "/var/www/sites"

$HTTP["host"] == "RegExHere" {
        server.document-root    = "/var/www/setup"
}

... где для 'RegExHere' я пробовал различные попытки, такие как:

192\.168\.0\.\d{1,3}(\s|$))+
192\.168\.
[192.168.[0-9]+.]
192\.168\.[0-9]+.[0-9]+$

...и различные их комбинации.Я понятия не имею, близок ли я, но независимо от того, что он показывает только страницу по умолчанию.

Может кто-нибудь посоветовать, где я могу ошибаться, пожалуйста?

Заранее спасибо!

1 Ответ

1 голос
/ 24 февраля 2012

Вы должны использовать синтаксис = ~ для соответствия регулярному выражению. Измените $HTTP["host"] == "RegExHere" на $HTTP["host"] =~ "RegExHere", и один из этих регулярных выражений должен работать. ^192\.168\.\d{1,3}\.\d{1,3}$ должен это сделать.

Нашли эту статью http://blog.evanweaver.com/2006/06/07/regular-expressions-in-lighttpd-host-redirects/

edit: я думаю, вам нужно использовать $ HTTP ["remoteip"] вместо $ HTTP ["host"], и похоже, что вы можете сделать это без регулярных выражений.

$HTTP["remoteip"] == "10.0.0.0/8" { url.access-deny = ("") }

$HTTP["remoteip"] == "127.0.0.0/8" { url.access-deny = ("") }

http://forum.lighttpd.net/topic/27

...