【问题标题】:Lighttpd set X-Forwarded-Host based on incoming requestLighttpd 根据传入请求设置 X-Forwarded-Host
【发布时间】:2017-01-28 13:25:03
【问题描述】:

我目前使用 Lighttpd 作为代理向不支持 HTTPS 的应用程序添加 HTTPS 加密。

为此,我使用以下配置:

# Listen to port 443
$SERVER["socket"] == ":443" {
  ssl.engine = "enable"
  include "ssl-params.conf"

  proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => 80 ) ) )
  setenv.add-request-header  = (
     "X-Forwarded-Proto" => "https",
     "X-Forwarded-Host" => "hardcoded.domain.com",
     "X-Forwarded-Port" => "443"
  )
  # Set Error/Log
  server.errorlog = "/var/log/lighttpd/error.log"
}

除了一件事之外,此配置有效。我必须硬编码 X-Forwarded-Host 的值。 直到最近这还不是问题,但现在我有多个域指向同一个代理,需要转发正确的域名。

有没有办法从传入的 HTTPS 连接中提取到主机以将正确的值提供给 X-Forwarded-Host

【问题讨论】:

    标签: reverse-proxy lighttpd x-forwarded-for


    【解决方案1】:

    lighttpd 将 X-Host 请求标头中的主机提供给后端,而不是使用 X-Forwarded-Host。

    仅供参考:根据https://redmine.lighttpd.net/issues/418,lighttpd 正计划(在未来)实施转发 HTTP 扩展 (https://www.rfc-editor.org/rfc/rfc7239)

    顺便说一句,lighttpd 也已经在代理请求中添加了 X-Forwarded-Proto。

    【讨论】:

    • 有趣的发现!我代理的应用程序仅使用 X-Forwarded-Host,我无法修改它。我想没有办法配置这种行为,对吧?我可以在使用 setenv 之前读取其他请求标头吗?
    • 我会尝试删除 X-Forwarded-Proto,谢谢提示。
    • 你可以在 lighttpd 中使用 mod_magnet 来做很多任意的操作。 Lua 代码将是两行,例如(未经测试)lighty.request["X-Forwarded-Host"] = lighty.request["Host"] return 0(第二行返回 0)
    猜你喜欢
    • 2017-09-27
    • 2019-11-06
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 2013-10-05
    • 2020-08-09
    相关资源
    最近更新 更多