代码之家  ›  专栏  ›  技术社区  ›  Clinton Chau

如何在Tomcat的RewriteValve中修改预设的协议和主机

  •  0
  • Clinton Chau  · 技术社区  · 6 年前

    我在Tomcat 8中使用RewriteValve重定向客户端请求,如下所示:

    RewriteRule /login$ /~autoLogin [R,L]

    这很好,但我遇到的问题是,当使用重定向时 [R] ,重定向目标URL是通过在服务器前面加上http://来创建的,而不是客户端最初请求的URL(文档称情况就是这样) [1] ).

    例如,当客户端请求

    https://myserver.com/login 我希望它重定向到 https://myserver.com/~autologin .

    然而,它实际上重定向到 http://myserver.com/~autologin

    如何配置/更改前置工作方式?

    目前,我正在通过将目标URL硬编码为

    https://myserver.com/~自动登录

    1 回复  |  直到 6 年前
        1
  •  0
  •   Clinton Chau    6 年前

    事实证明,这不是RewriteValve的问题,而是我使用的服务器基础结构的副作用。

    Tomcat服务器运行在AWS上弹性负载平衡器后面的EC2实例上。ELB承载允许HTTPS请求的证书。然而,由于EC2实例不能直接使用证书,ELB上以HTTPS形式出现的请求作为HTTP请求转发给Tomcat实例;ELB将透明地协商通信的证书交换和加密。

    因此,对于RewriteValve,传入的请求是在HTTP上的,因此,它以HTTP作为前缀。