Назад | Перейти на главную страницу

Lighttpd proxy tomcat путь

Мой кот обслуживает 2 сайта

ROOT -> Main-site
/mobile -> dedicated mobile website 

Я настроил lighttpd как прокси

$HTTP["host"] =~ "www.my-site.at" {
        proxy.server = ( "" => (
                        ( "host" => "127.0.0.1",
                          "port" => 8080
                        )
                ))
}

Как я могу сказать lighttpd использовать http://127.0.0.1:8080/mobile для m.my-site.at? Или мне нужно настроить второй кот и развернуть мобильный сайт под ROOT?

Спасибо

Вы мог использовать url.rewrite-once для префикса всех запросов на m.my-site.at с участием /mobile:

$HTTP["host"] == "m.my-site.at" {
    url.rewrite-once = ( ".*" => "/mobile$0" )
    proxy.server = (...)
}

Возможно, вам придется загрузить mod_rewrite перед mod_proxy чтобы это работало.

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

Реальное решение состоит в том, чтобы заставить серверную часть понимать vhosts, то есть обрабатывать запросы, разные в зависимости от имени хоста. Если бэкэнд не может этого сделать, возможно, вы захотите запустить несколько экземпляров, да.