Я пытаюсь настроить обратный прокси-сервер в lighttpd, чтобы все запросы (и только эти) в / mobile / video перенаправлялись в каталог / вторичного веб-сервера. Это довольно просто в apache, но я не могу понять, как это сделать в lighttpd.
$HTTP["url"] =~ "^/wsmobile/video/" {
url.rewrite-once = ( "^/wsmobile/video/(.+)" => "/$1" )
proxy.server = ( "" => ( ( "host" => "210.200.144.26", "port" => 9091 ) ) )
}
Я пробовал использовать директиву http ["url"], но lighttpd просто игнорирует эти запросы и продолжает передавать полный URL-адрес вторичному серверу, который, конечно, подавляет и выдает 404-е. Однако, если я сделаю глобальную перезапись, все будет перенаправлено на вторичный сервер, чего я тоже не хочу.
Как мне выполнить эту задачу?
URL переписывается не будет работать в $HTTP["url"]
. Однако вы сможете переписать его глобально следующим образом:
url.rewrite-once = ( "^/wsmobile/video/(.*)" => "/test/" )
а затем поймать его с помощью:
$HTTP["url"] =~ "^/test/" {
# do proxy here
}
ОБНОВИТЬ:
См. Здесь: Ошибка Lighttpd # 164. В частности, прокси-core.rewrite-запрос должно быть то, что вы ищете.
Это можно сделать с помощью proxy.header
начиная с lighttpd v 1.4.46. Видеть:
https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModProxy
Пример выше:
$HTTP["url"] =~ "^/wsmobile/video/" {
proxy.header = ("map-urlpath" => ( "/wsmobile/video" => "/" ))
proxy.server = ( "" => ( ( "host" => "210.200.144.26", "port" => 9091 ) ) )
}
Одна вещь, которую я обнаружил, - это если вы публикуете что-то на прокси-сервере (скажем, http://210.200.144.26:9091/post-a-link"), который не транслируется должным образом обратно на прокси, поскольку он выдает 404, потому что он ищет http: // $ PROXY / post-a-link не на сервере с портом 9091.