启用http-forwarded模块,执行如下命令:

java -jar $JETTY_HOME/start.jar --add-modules=http-forwarded

命令的输出,如下:

INFO  : http-forwarded  initialized in ${jetty.base}/start.d/http-forwarded.ini
INFO : Base directory was modified

http-forwarded模块的配置文件$JETTY_BASE/start.d/http-forwarded.ini,内容如下:

# ---------------------------------------
# Module: http-forwarded
# Enables processing of the "Forwarded" HTTP header (and its predecessors "X-Forwarded-*" HTTP headers).
# The "Forwarded" HTTP header is added by intermediaries to provide information about the clients.
# ---------------------------------------
--modules=http-forwarded ### ForwardedRequestCustomizer Configuration ## Whether to process only the RFC7239 "Forwarded" header.
## "X-Forwarded-*" headers are not processed.
# jetty.httpConfig.forwardedOnly=false ## Whether the address obtained from "Forwarded: by=" or
## "X-Forwarded-Server" is used in the request authority.
# jetty.httpConfig.forwardedProxyAsAuthority=false ## Whether the "X-Forwarded-Port" header is used in the request authority,
## or else it is the remote client port.
# jetty.httpConfig.forwardedPortAsAuthority=true ## The name of the RFC 7239 HTTP header.
# jetty.httpConfig.forwardedHeader=Forwarded ## The name of the obsolete forwarded host HTTP header.
# jetty.httpConfig.forwardedHostHeader=X-Forwarded-Host ## The name of the obsolete forwarded server HTTP header.
# jetty.httpConfig.forwardedServerHeader=X-Forwarded-Server ## The name of the obsolete forwarded scheme HTTP header.
# jetty.httpConfig.forwardedProtoHeader=X-Forwarded-Proto ## The name of the obsolete forwarded for HTTP header.
# jetty.httpConfig.forwardedForHeader=X-Forwarded-For ## The name of the obsolete forwarded port HTTP header.
# jetty.httpConfig.forwardedPortHeader=X-Forwarded-Port ## The name of the obsolete forwarded https HTTP header.
# jetty.httpConfig.forwardedHttpsHeader=X-Proxied-Https ## The name of the obsolete forwarded SSL session ID HTTP header.
# jetty.httpConfig.forwardedSslSessionIdHeader=Proxy-ssl-id ## The name of the obsolete forwarded SSL cipher HTTP header.
# jetty.httpConfig.forwardedCipherSuiteHeader=Proxy-auth-cert

各参数的说明,如下:

  • jetty.httpConfig.forwardedOnly

    是否仅处理标准的转发头部,跳过对非标扩展比如HTTP头部X-Forwarded-*的处理。

    默认值为false,即兼容非标HTTP头部X-Forwarded-*

    转发场景下的标准HTTP头部,可参考RFC文档Forwarded HTTP Extension
  • jetty.httpConfig.forwardedProxyAsAuthority

    从请求头部X-Forwarded-Server或者Forwarded: by=中得到的主机信息,是否参与认证。默认值为false
  • jetty.httpConfig.forwardedPortAsAuthority

    从请求头部X-Forwarded-Port获取到的端口信息,是否参与认证。默认值为true
  • jetty.httpConfig.forwardedHeader

    RFC文档Forwarded HTTP Extension中定义的转发头部,取值为Forwarded
  • jetty.httpConfig.forwardedHostHeader

    转发场景下的非标HTTP头部,取值为X-Forwarded-Host
  • jetty.httpConfig.forwardedServerHeader

    转发场景下的非标HTTP头部,取值为X-Forwarded-Server
  • jetty.httpConfig.forwardedProtoHeader

    转发场景下的非标HTTP头部,取值为X-Forwarded-Proto
  • jetty.httpConfig.forwardedForHeader

    转发场景下的非标HTTP头部,取值为X-Forwarded-For
  • jetty.httpConfig.forwardedPortHeader

    转发场景下的非标HTTP头部,取值为X-Forwarded-Port
  • jetty.httpConfig.forwardedHttpsHeader

    转发场景下的非标HTTP头部,默认值为X-Proxied-Https
  • jetty.httpConfig.forwardedSslSessionIdHeader

    默认值为Proxy-ssl-id

    参考代理和路由选择 URL中关于Client SSL Session ID Forwarding的说明,如下:

    默认 HTTP 标头称为 Proxy-ssl-id,但可以使用您选择的任何标头发送客户机的 SSL/TLS 会话 ID。

  • jetty.httpConfig.forwardedCipherSuiteHeader

    默认值为Proxy-auth-cert

    参考代理和路由选择 URL中关于Client SSL/TLS Certificate Forwarding的说明,如下:

    默认 HTTP 标头称为 Proxy-auth-cert,但可以使用您选择的任何标头发送客户机的 SSL/TLS 证书。

参考资料

Jetty的http-forwarded模块的更多相关文章

  1. Jetty使用教程(四:21-22)—Jetty开发指南

    二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...

  2. Jetty 开发指南:Jetty 内嵌开发

    Jetty的口号是“不要在Jetty中部署你的应用程序,在你的应用程序中部署Jetty!” 这意味着,作为将应用程序捆绑为要部署在Jetty中的标准WAR的替代方案,Jetty旨在成为一个软件组件,可 ...

  3. jetty学习小结

    1.什么是jetty? 开源HTTP服务器和Servlet引擎,是web应用的容器,同tomcat类似.由于其轻量灵活的特性,很多知名产品也应用了它,如maven.eclipse.hadoop.spa ...

  4. SpringBoot之旅第四篇-web开发

    一.引言 有了自动配置,springboot使web开发变得简单,这个在springboot之旅中的第一篇中就有体现,实际的开发中当然不会这么简单,很多时候我们都需要自己去定制一些东西.web开发的东 ...

  5. springboot知识点【笔记】

    # **一.**Spring Boot 入门 ## 1.Spring Boot 简介 > 简化Spring应用开发的一个框架:>> 整个Spring技术栈的一个大整合:>> ...

  6. 第二十三章 多项目集中权限管理及分布式会话——《跟我学Shiro》

    二十三章 多项目集中权限管理及分布式会话——<跟我学Shiro> 博客分类: 跟我学Shiro 跟我学Shiro  目录贴:跟我学Shiro目录贴 在做一些企业内部项目时或一些互联网后台时 ...

  7. Shiro学习(23)多项目集中权限管理

    在做一些企业内部项目时或一些互联网后台时:可能会涉及到集中权限管理,统一进行多项目的权限管理:另外也需要统一的会话管理,即实现单点身份认证和授权控制. 学习本章之前,请务必先学习<第十章 会话管 ...

  8. [从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作

    [从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 目录 [从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 0x00 摘要 0x01 业务领域 1.1 SOFARegis ...

  9. 【SpringBoot1.x】SpringBoot1.x Web 开发

    SpringBoot1.x Web 开发 文章源码 简介 SpringBoot 非常适合 Web 应用程序开发.可以使用嵌入式 Tomcat,Jetty 或 Undertow 轻松创建独立的 HTTP ...

  10. 在maven多模块结构中,并且使用overlay的情况下使用jetty热部署

    在使用maven多模块的结构的时候,同时有多个web工程使用maven-war-plugin的overlay来组织的时候,本地开发时如何在eclipse里面启动容器并且可以热部署调试是个比较麻烦的问题 ...

随机推荐

  1. 详解SSL证书系列(1)什么是SSL证书?

    你一定遇到过这种情况,打开一个网站,浏览器弹出警告"您与此网站之间建立的连接不安全.由于此连接不安全,因此信息(如密码或信用卡)不会安全地发送到此网站,并且可能被其他人截获或看到" ...

  2. React Native如何每次唤醒APP都执行一段代码

    最近想要做一个类似于淘宝每次打开会根据用户剪贴板内容弹出对应商品的功能.要完成这个功能需要每次唤醒APP都读取一次剪贴板. 1.监听 && 销毁 1 async componentDi ...

  3. Oracle设置日志参数-ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    要实现两个数据库之间的实时同步,需要给Oracle设置参数 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; -- 执行了12小时,等待数据库中的其它事务都提交以后才 ...

  4. 第134篇:解决浏览器的CORS跨域问题(CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome-untrusted, https, edge.)

    好家伙,   我继续尝试着将我的飞机大战使用ES6模块化分离开来,出了点问题 1.出现问题: edge,chrome等一系列浏览器,会为了安全,禁止你跨域访问 目录如下: 主程序  index.htm ...

  5. 【Azure 存储服务】Blob中数据通过Stream Analytics导出到SQL/Cosmos DB

    问题描述 Json格式的数据目前是存储在Azure Blob中,如何将这些数据Load到Sql DB和CosmosDB中呢? 测试方案 使用Azure流分析服务(Stream Analytics)功能 ...

  6. 【Azure Function】调试 VS Code Javascript Function本地不能运行,报错 Value cannot be null. (Parameter 'provider')问题

    问题描述 参考官方文档,通过CS Code创建JavaScription Function,在本地远行时候出现: Value cannot be null. (Parameter 'provider' ...

  7. 【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?

    问题描述 使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢? Microsoft Antimalware for Azure is ...

  8. 在 Spring Boot 3.x 中使用 SpringDoc 2 / Swagger V3

    SpringDoc V1 只支持到 Spring Boot 2.x springdoc-openapi v1.7.0 is the latest Open Source release support ...

  9. C++ //类模板中成员函数创建时机 //类模板中成员函数和普通类中成员函数创建时机是有区别的: //1.普通类中的成员函数一开始就可以创建 //2.类模板中的成员函数在调用时才创建

    1 //类模板中成员函数创建时机 2 //类模板中成员函数和普通类中成员函数创建时机是有区别的: 3 //1.普通类中的成员函数一开始就可以创建 4 //2.类模板中的成员函数在调用时才创建 5 6 ...

  10. 使用FastWiki一分钟搭建公司的智能客服

    FastWiki 新UI介绍:基于React与LobeUI框架设计 FastWiki 最近引入了基于React的新UI,这是一个重大的更新.在设计新UI时,我们借鉴了LobeUI的框架,并且在接口调用 ...