Кажется, я не могу проксировать URL-адрес на другой порт с тем же именем хоста. У меня есть пользовательский интерфейс (Angular 5), работающий на somehost: 8080, а остальная часть веб-приложения на somehost.com (порт 80). Я бы хотел прокси http://somehost.com/xxx к http://somehost.com:8080. Не уверен, что моя конфигурация правильная или в нужном месте.
$HTTP["host"] =~ "somehost\.com$" {
$HTTP["url"] =~ "(^/xxx/)" {
proxy.server = ( "" => ("" => ( "host" => "somehost.com", "port" => 8080 )))
}
url.rewrite-if-not-file = (
"^/(.*)" => "/index.php/$1",
)
}
Судя по вашему вопросу, похоже, вы хотите служить http://somehost.com/xxx/file
из http://somehost.com:8080/file
. В этом случае ваша конфигурация неверна, потому что она пытается обслуживать http://somehost.com:8080/xxx/file
вместо. Вам нужно добавить url.rewrite-once
:
url.rewrite-once = ( "^/xxx/(.*)$" => "/$1" )
proxy.server = ( "" => ( # proxy all file extensions / prefixes
"" => # optional label to identify requests in logs
( "host" => "somehost",
"port" => 8080
)
)
)
В зависимости от вашей версии lighttpd вы можете или не сможете вызвать url.rewrite-once из совпадения с $ HTTP ["url"].
Также убедитесь, что вы загрузили модули mod_proxy и mod_rewrite с:
server.modules += ( "mod_proxy" )
server.modules += ("mod_rewrite")
Подробнее о proxy.server: https://redmine.lighttpd.net/projects/1/wiki/Docs_ModProxy Дополнительная информация о url.rewrite-once: https://redmine.lighttpd.net/projects/1/wiki/docs_modrewrite#urlrewrite-repeat