Настройки обратного прокси Lighttpd

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

Например:

// статический / сокет / ajax

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

Вот файл конфигурации для mod_proxy:

##
# Serve Static Content via Lighttpd.
#
$HTTP["url"] =~ "^/static/" {
    server.document-root = "/path/to/my/static/files"
    accesslog.filename = rootdir + "/var/log/static.log"
    server.errorlog = rootdir + "/var/log/static.error.log"
}
##
# Proxy to instance of Socket.io.
#
else $HTTP["url"] =~ "^/socket/" {
    accesslog.filename = rootdir + "/var/log/socket.log"
    server.errorlog = rootdir + "/var/log/socket.error.log"
    proxy.server  = (
        "" => ( (
            "host" => "127.0.0.1",
            "port" => 3000
        ) )
    )
}
##
# Proxy to AJAX backend.
#
else $HTTP["url"] =~ "^/ajax/" {
    accesslog.filename = rootdir + "/var/log/ajax.log"
    server.errorlog = rootdir + "/var/log/ajax.error.log"
    proxy.server  = (
        "" => ( (
            "host" => "127.0.0.1",
            "port" => 4000
        ) )
    )
}
##
# Proxy to something that returns my layout.
#
else $HTTP["url"] =~ "^/" {
    accesslog.filename = rootdir + "/var/log/root.log"
    server.errorlog = rootdir + "/var/log/root.error.log"
    proxy.server  = (
        "" => ( (
            "host" => "127.0.0.1",
            "port" => 5000
            ) )
    )
}

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

Спасибо,


person Jonathan    schedule 19.02.2012    source источник


Ответы (1)


Строго говоря, блоки else должны быть ненужными.

Что касается вашей реальной проблемы, вы указываете в своем вопросе, что хотите сопоставить /ajax, но ваше регулярное выражение ищет /ajax/ (обратите внимание на косую черту). Какой URL вы запрашиваете?

person David Souther    schedule 19.02.2012
comment
Основная цель использования обратного прокси, по крайней мере в моем случае, — обойти ту же политику происхождения. Таким образом, мой вариант использования будет публиковать данные и не заботиться ни о чем, кроме начального /ajax. Исключением является /static. Мне нужно сохранить запрос полностью, чтобы обслуживать правильный статический контент. - person Jonathan; 20.02.2012
comment
Под URL вы имеете в виду домен? Я просто хочу, чтобы lighttpd соответствовал URL-адресу, независимо от домена. Я неправильно понял? - person Jonathan; 20.02.2012
comment
Нет, я просто имею в виду часть пути (после домена). Я только указываю косую черту в конце этого ответа :) - person David Souther; 20.02.2012