Как изменить предварительно протокол и хост в Tomcat RewriteValve - PullRequest
0 голосов
/ 23 октября 2018

Я использую RewriteValve в Tomcat 8 для перенаправления клиентских запросов следующим образом:

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

Это нормально, но проблема, с которой я сталкиваюсь, заключается в том, что когда перенаправлениеПри использовании [R] целевой URL перенаправления создается путем добавления к серверу http: //, а не того, что изначально запрашивал клиент (в документах говорится, что это будет иметь место [1] ).

Например, когда клиент запрашивает

https://myserver.com/login Я ожидаю, что он будет перенаправлен на https://myserver.com/~autologin.

Однако он фактически перенаправляет на http://myserver.com/~autologin

Как я могу сконфигурировать / изменить, как работает предварительная подготовка?

В настоящий момент я работаю над этим, жестко закодировав целевой URL-адрес в

https://myserver.com/~autologin

, но этонежелательно, поскольку я сохраняю эту конфигурацию в системе контроля версий и использую ее на нескольких серверах для разработки, тестирования, подготовки и производства.

1 Ответ

0 голосов
/ 23 октября 2018

Оказывается, это не проблема с RewriteValve, а побочный эффект серверной инфраструктуры, которую я использую.

Сервер Tomcat работает на экземпляре EC2 за Elastic Load Balancer на AWS.ELB содержит сертификат, разрешающий запросы HTTPS.Однако, поскольку экземпляр EC2 не может использовать сертификат напрямую, запрос, который поступает как HTTPS на ELB, перенаправляется в экземпляр Tomcat как запрос HTTP;ELB будет прозрачно согласовывать обмен сертификатами и шифрование сообщений.

Таким образом, для RewriteValve входящий запрос выполняется по HTTP и, следовательно, он предшествует HTTP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...