lighttpd - 使用 Lighttpd mod_proxy 代理子文件夹

标签 lighttpd mod-proxy

我在让 mod_proxy 将流量正确转发到在同一台机器上运行的不同网络服务器时遇到问题,以获取预定义的子文件夹。理想情况下,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"
 }
}

一段时间以来,我一直在反对这一点,因此欢迎提出任何建议。

最佳答案

我最终找出了导致它无法像我预期的那样工作的问题。

lighttpd 的重写 mod 的工作方式是在评估它的 $HTTP["url"] 条件之前评估所有 url.rewrite 命令,这意味着放置在 $HTTP["url"] 条件中的任何 url.rewrite 命令将不起作用.

我无法找到一个很好的解决方案来解决我正在寻找的具有此限制的实现,而是最终将一些重写下游推送到我将流量代理到的其他服务器(在这种情况下为节点)。

这在 lighttpd 的 ModRewrite 中被松散地提及。带有这一行的文档:

NOTE: url rewriting does not work within a $HTTP["url"] conditional.

关于lighttpd - 使用 Lighttpd mod_proxy 代理子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12470062/

相关文章:

php - 如何告诉浏览器忘记 htdigest?

lighttpd mod_secdownload 总是 404

django - 在Django生产教程上提供静态文件

Apache 和 JBoss 同时使用端口 80

nginx - fastcgi 多路复用?

ajax - Lighttpd 反向代理设置

java - 路径上的 apache 代理错误背后的 Tomcat

Apache websocket 重定向到 Tomcat : mod_proxy and mod_proxy_wstunnel

node.js - 如何使用示例在端口 80 上运行 sails.js 应用程序?

apache - 使用 Apache 通过安全代理提供 3rd 方图像?