Рейтинг:0

Приложение Tomcat (сервер ERDDAP) за проблемами перенаправления прокси

флаг nc

У меня есть экземпляр ERDDAP, работающий на сервере Tomcat за обратным прокси-сервером NGINX. Среда полностью на Kubernetes, RP — это входной контроллер NGINX, который перенаправляет запрос на порт 443 экземпляру службы на порту 8080, связанному с контейнером, в котором работает Tomcat (и экземпляр ERDDAP).

Я нашел этот учебник (https://www.n0r1sk.com/post/nginx-reverse-proxy-with-ssl-offloading-and-apache-tomcat-backends/), в котором показано, как настроить server.xml для Tomcat за обратным прокси-сервером, поэтому HTTP-коннектор для моего сервера Tomcat:

<Connector server="Apache" secure="true" port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
       proxyPort="443"
       relaxedPathChars='[]|'
       relaxedQueryChars='[]:|{}^&#x5c;&#x60;&quot;&lt;&gt;' />

С этой конфигурацией, когда я запрашиваю URL-адрес https://erddap.ve.ismar.cnr.it/erddap:

 ПОЛУЧИТЬ /erddap/ HTTP/1.1
 Хост: erddap.ve.ismar.cnr.it
 Идентификатор X-запроса: 484e514b4038614090bf34061e9287f3
 X-Реал-IP: 10.104.235.192
 X-переадресовано-для: 10.104.235.192
 X-Forwarded-Host: erddap.ve.ismar.cnr.it
 X-переадресованный порт: 443
 X-Forwarded-Proto: https
 X-схема: https
 ...

Я получаю следующий ответ:

HTTP/1.1 302 
Строгая транспортная безопасность: max-age=0
Параметры X-Frame: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-защита: 1; режим = блок
различаться: происхождение
Access-Control-Allow-Credentials: правда
Access-Control-Expose-Headers: Access-Control-Allow-Origin,Access-Control-Allow- 
Реквизиты для входа
Местонахождение: https://erddap.ve.ismar.cnr.it/erddap/index.html
Длина содержимого: 0
Дата: Чт, 24 февраля 2022 г., 17:55:41 по Гринвичу
Сервер: Апач

и все отлично работает с переадресацией прокси-сервера и ответом бэкэнда Tomcat.

Но если я добавлю в конфигурацию Tomcat Connector параметр схема = "https", как это было предложено в упомянутом выше руководстве:

<Connector server="Apache" secure="true" port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
       proxyPort="443"
       scheme="https"
       relaxedPathChars='[]|'
       relaxedQueryChars='[]:|{}^&#x5c;&#x60;&quot;&lt;&gt;' />

тот же запрос не выполняется, и я получаю следующий ответ от Tomcat:

HTTP/1.1 302 
Строгая транспортная безопасность: max-age=0
Параметры X-Frame: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-защита: 1; режим = блок
различаться: происхождение
Access-Control-Allow-Credentials: правда
Access-Control-Expose-Headers: Access-Control-Allow-Origin,Access-Control-Allow- 
Реквизиты для входа
Местонахождение: (не указано)/erddap/index.html
Длина содержимого: 0
Дата: Чт, 24 февраля 2022 г., 18:02:44 по Гринвичу
Сервер: Апач

Вы можете заметить, что заголовок «Местоположение:» совершенно неверен с префиксом «(не указано)» и заставляет клиента сделать последующий запрос URL-адреса. https://erddap.ve.ismar.cnr.it/erddap/(not%20specified)/erddap/index.html (и, конечно, запрос не выполняется).

Может ли кто-нибудь из вас помочь мне определить, где может быть проблема в моей конфигурации Tomcat? Почему поведение настолько отличается, просто добавив параметр схемы = "https" в server.xml?

Спасибо заранее, Пьерпаоло

Рейтинг:0
флаг in

В конфигурации соединителя Tomcat отсутствует информация о прокси-сервере.

Соответствующие атрибуты имя_прокси и порт прокси

Пример:

<Connector server="Apache" secure="true" port="8080" protocol="HTTP/1.1" 
   connectionTimeout="20000"
   proxyName="example.com"
   proxyPort="443"
   scheme="https"
   relaxedPathChars='[]|'
   relaxedQueryChars='[]:|{}^&#x5c;&#x60;&quot;&lt;&gt;' />
флаг nc
Здравствуйте, Джеральд, спасибо за быстрый ответ! В моем соединителе есть некоторая информация о прокси, для proxyPort установлено значение 443. Нужно ли мне также добавлять proxyName="erddap.ve.ismar.cnr.it"?
флаг in
Да, в этом суть.
флаг nc
К сожалению, это не сработало, я добавил только строку proxyName="erddap.ve.ismar.cnr.it" на коннекторе tomcat, но сервер продолжает отвечать с префиксом "(не указано)". `

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.