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

URL прокси на другой порт через Lighttpd

Кажется, я не могу проксировать 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