4

mod_proxy が、定義済みのサブフォルダーの同じマシンで実行されている別の Web サーバーにトラフィックを適切に転送するのに問題があります。理想的には、domain.com/docs は 127.0.0.1:3000 に転送し、他のすべてのトラフィックは domain.com に留まる必要があります。ここでの書き換えルールは、domain.com で実行される wordpress インストール用です。

$HTTP["host"] =~ "(^|\.)domain\.com" {
 $HTTP["url"] =~ "^/docs" {
  proxy.server  = ( "" => (( "host" => "127.0.0.1", "port" => 3000 )))
 } 
 $HTTP["url"] !~ "^/docs/(.*)" {
  url.rewrite = (
   "^/(.*)\.(.+)$" => "$0",
   "^/wp/(.*)$" => "$0",
   "^/(.+)/?$" => "/index.php/$1"
  )
  server.document-root = "/mnt/webroot/html"
 }
}

私はこれに対してしばらく頭を悩ませてきたので、どんな提案も大歓迎です。

4

1 に答える 1

2

私は最終的に、これが期待どおりに機能しない原因となっている問題を理解しました。

lighttpdのrewritemodの動作方法は、$ HTTP ["url"]条件を評価する前に、すべてのurl.rewriteコマンドを評価します。つまり、$ HTTP["url"]条件内に配置されたurl.rewriteコマンドは効果がありません。 。

この制限で探していた実装の適切な解決策を見つけることができず、代わりに、トラフィックをプロキシしている他のサーバー(この場合はノード)への書き換えの一部をダウンストリームにプッシュすることになりました。

これは、lighttpdのModRewriteドキュメントで次の行で大まかに参照されています。

NOTE: url rewriting does not work within a $HTTP["url"] conditional.
于 2012-09-25T19:15:20.483 に答える