Reverse-Proxy

通過 Lighttpd 到不同埠的代理 URL

  • April 23, 2018

我似乎無法將 URL 代理到同一主機名上的另一個埠。我在 somehost:8080 上執行使用者界面(Angular 5),在 somehost.com(埠 80)上執行 Web 應用程序的其餘部分。我想代理http://somehost.com/xxx>到<http://somehost.com:8080。不確定我的配置是否正確或在正確的位置。

$HTTP["host"] =~ "somehost\.com$" {

       $HTTP["url"] =~ "(^/xxx/)" {
         proxy.server  = ( "" =&gt; ("" =&gt; ( "host" =&gt; "somehost.com", "port" =&gt; 8080 )))
       }

       url.rewrite-if-not-file = (
               "^/(.*)" =&gt; "/index.php/$1",
       )


}

從您的問題來看,您似乎想http://somehost.com/xxx/filehttp://somehost.com:8080/file. 在這種情況下,您的配置是錯誤的,因為它正在嘗試提供服務http://somehost.com:8080/xxx/file。您需要添加一個url.rewrite-once

 url.rewrite-once = ( "^/xxx/(.*)$" =&gt; "/$1" )
 proxy.server  = ( "" =&gt; ( # proxy all file extensions / prefixes
   "" =&gt; # optional label to identify requests in logs
     ( "host" =&gt; "somehost",
       "port" =&gt; 8080
     )
   )
 )

根據您的 lighttpd 版本,您可能會或可能無法從 $HTTP 中呼叫 url.rewrite-once

$$ “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-重複

引用自:https://serverfault.com/questions/908132