java - 在 Spring Boot 中使用 Jetty 接受代理协议(protocol) V2 流量

标签 java spring-boot jetty load-balancing proxy-protocol

我正在尝试在 java Spring Boot 2.4.5 中配置 Jetty 9.4.39.v20210325 以接受代理协议(protocol) V2 流量。我想在 spring 配置类中以编程方式执行此操作。这是我根据this page底部的Proxy Protocol部分在SharedConfiguration.java配置类中编写的方法.

@Bean
  public ConfigurableServletWebServerFactory
      jettyCustomizer() {
    JettyServletWebServerFactory factory = new JettyServletWebServerFactory();
    factory.addServerCustomizers(server -> {
      ProxyConnectionFactory proxyConnectionFactory = new ProxyConnectionFactory();
      ServerConnector serverConnector = new ServerConnector(server, proxyConnectionFactory);
      server.addConnector(serverConnector);
    });
    return factory;
  }

HTTP 流量来自 AWS EC2 网络负载均衡器 (NLB),并且该均衡器启用了代理协议(protocol) V2 流量。

当我使用代理协议(protocol)流量激活服务中的端点时,我收到此响应:

Bad Message 400
reason: Illegal character CNTL=0x0

有谁知道如何让我的服务接受此代理协议(protocol) V2 流量?我不确定我是否正确配置了 Jetty 来执行此操作。

谢谢!

最佳答案

后来我发现了我的配置问题,我添加了一个新的服务器连接器,而不是更改 Jetty 服务器中已有的连接器。

正确的做法是:

@Bean
public ConfigurableServletWebServerFactory jettyCustomizer() {
  JettyServletWebServerFactory factory = new JettyServletWebServerFactory();
  factory.addServerCustomizers(server -> {
    ServerConnector serverConnector = (ServerConnector) server.getConnectors()[0];
    serverConnector.addFirstConnectionFactory(new ProxyConnectionFactory());
    });
  return factory;
}

在这里,我获取 Activity 服务器连接器并将其更改为还包含一个 ProxyConnectionFactory,它允许 Jetty 接受代理协议(protocol)流量。

关于java - 在 Spring Boot 中使用 Jetty 接受代理协议(protocol) V2 流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73225314/

相关文章:

java - PdfBox 2.0.3 NullPointerException 在 Linux 上的字体编码

java - 使用 Spring Data JPA native 查询在两个日期之间搜索记录?

mysql - Spring Mysql com.mysql.jdbc.MysqlDataTruncation : Data truncation: Data too long for column

groovy - 如何使用 groovy/gradle 运行 jetty 7+ 并指定 war ?

java - Jetty Jar 升级

java - HTTP 状态 404 - 请求的资源不可用

java - Axon 如何在 saga 中捕获异常

java - Spring boot 中的安全属性

scala - 结合Akka,Spray和嵌入式Jetty

java - 添加 Java 异常断点在 Eclipse 中不显示任何匹配项