通过 Lighttpd 将 URL 代理到不同的端口

通过 Lighttpd 将 URL 代理到不同的端口

我似乎无法将 URL 代理到同一主机名上的另一个端口。我的用户界面 (Angular 5) 在 somehost:8080 上运行,其余 Web 应用程序在 somehost.com(端口 80)上运行。我想代理http://somehost.com/xxxhttp://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",
        )


}

答案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 版本,您可能能够或无法在 $HTTP["url"] 匹配中调用 url.rewrite-once。

另外请确保您已经加载了 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

相关内容