Обслуживание нескольких приложений в разных поддоменах с Lighthtpd - PullRequest
0 голосов
/ 22 февраля 2012

Я пытаюсь обслуживать разные субдомены с разными приложениями, и все они используют один и тот же сервер Lighthtpd в качестве внешнего сервера. Все приложения, обслуживающие субдомены, также работают на том же сервере, что и Lighthtpd.

Я настроил записи DNS следующим образом (обе записи A)

mydomain.com       xx.xx.xx.xx
sub.mydomain.com   xx.xx.xx.xx

xx.xx.xx.xx одинаково для обеих записей.

Соответствующие части моего файла конфигурации Lighttpd следующим образом

$HTTP["host"] =~ "sub.mydomain.com" {
    fastcgi.server = (
        "/ideas.fcgi" => (
            "main" => (
                "host" => "127.0.0.1",
                "port" => "9030",
            )
        ),
    )

    url.rewrite-once = (
        "^(/.*)$" => "/ideas.fcgi$1",
    )
}

$HTTP["host"] =~ "mydomain.com" {
    proxy.balance = "round-robin" proxy.server = ( "/" =>
        ( ( "host" => "127.0.0.1", "port" => 9010 ) ) )
}

Процесс, запущенный на порте 9010, является веб-приложением Java, а процесс, запущенный на 9030, является веб-приложением django, запущенным как процесс fcgi, запущенный с помощью следующей команды

./manage.py runfcgi method=threaded host=127.0.0.1 port=9030

Моя проблема в том, что в моем браузере оба URL, mydomain.com и sub.mydomain.com получают одно и то же веб-приложение (приложение, предназначенное для mydomain.com).

Похоже, что настройка Lighttpd для sub.mydomain.com либо игнорируется, либо переопределяется настройкой mydomain.com. Я даже попытался изменить физическое расположение обоих параметров в файле конфигурации, но это тоже не помогло.

Я уверен, что эта конфигурация должна быть возможной. Я что-то упустил?

1 Ответ

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

Строка $HTTP["host"] =~ "mydomain.com" выполняет сопоставление с регулярным выражением, поэтому она соответствует как поддомену Django, так и домену.Если вы используете строку, равную совпадению, как показано ниже, то субдомен Django не будет совпадать.

$HTTP["host"] == "mydomain.com"

Возможно, есть лучший способ сделать это (например, команда пропустить все дополнительные виртуальные хосты, как только высоответствует первому), но я боюсь, что мои знания lighttpd ограничены.

...