【问题标题】:Jetty-Jersey how to handle requests behind reverse proxy?Jetty-Jersey 如何处理反向代理后面的请求?
【发布时间】:2021-03-27 15:58:24
【问题描述】:

我正在使用:

  • Jetty 9.4.12.v20180830
  • Jersey 2.28

有没有推荐的方法来装饰我们的网络服务器以处理反向代理后面的请求?

即相对路径和Location 标头无法正确显示,因为代理具有不同的主机并且路由不同。

我可能希望找到过滤器来处理(x-)forwarded* 标头。 例如,我找到了这个(qaware/x-forwarded-filter)但它不是标准库...

【问题讨论】:

    标签: java jersey jetty embedded-jetty


    【解决方案1】:

    配置您的反向代理以向 Jetty 提供 Forwarded (https://www.rfc-editor.org/rfc/rfc7239) 请求标头。

    然后将ForwardedRequestCustomizer 添加到您的HttpConfiguration 中的ServerConnector。

    应该是这样的。

    【讨论】:

    • 我明白了,谢谢。该定制器是否也处理修改响应标头?诸如位置标头之类的东西,因此它们在代理前面工作(假设代理填写正确的转发标头)?
    • ForwardedRequestCustomizer 更新请求的内部结构,特别是针对请求的权限(使其匹配用户代理的预期目的地,而不是实际目的地),所有生成的响应位置都基于该权限关闭。所以以一种迂回的方式,是的,它会导致响应发生变化。
    • 哦,更新您的 Jetty 版本(考虑 9.4.35),因为自 9.4.12 以来已经对 ForwardedRequestCustomizer 进行了数百次改进。
    • 谢谢,我今天花了一些时间尝试添加了 ForwardedRequestCustomizer 的 9.4.35。对我来说,另一个障碍是我们的 Envoy 代理切断了部分路线。例如。对“/a/b/c”的客户端请求在代理之后以“/b/c”的形式到达服务器。所以位置返回为“host:port/b/c”,它在代理前面不起作用(它必须是“host:port/a/b/c”)。有办法处理吗?
    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    相关资源
    最近更新 更多