Nginx SSL с tomcat (moqui) не может стабильно запускать moqui с адресом https

У меня есть nginx с ssl перед tomcat 8, а moqui находится внутри tomcat.

Часть веб-приложения в файле conf moqui

<webapp name="webroot" http-port="" https-enabled="false">
    <root-screen host=".*" location="component://webroot/screen/webroot.xml"/>
</webapp>

Config nginx для заголовка ssl

     proxy_set_header        Accept-Encoding     "";
     proxy_set_header        X-Forwarded-For     $remote_addr;
     proxy_set_header        Host                $http_host;
     proxy_set_header        X-Forwarded-Host    $host;
     proxy_set_header        X-Forwarded-Server  $host;
     proxy_set_header        X-Real-IP           $remote_addr;
     proxy_set_header        X-Forwarded-Proto   $scheme;

     proxy_pass http://localhost:8080/;
     proxy_http_version 1.1;

Tomcat добавить RemoteIpValve

<Valve className="org.apache.catalina.valves.RemoteIpValve"
   internalProxies="192\.168\.1\.14|127\.0\.0\.1"
   remoteIpHeader="x-forwarded-for"
   remoteIpProxiesHeader="x-forwarded-by"
   protocolHeader="x-forwarded-proto"
/>

Это должно работать, чтобы tomcat (moqui) имел адрес https:// для всех ресурсов.

Но я получаю странную картину по адресам. каждые 3 раза обновляя страницу (например, Логин), я получаю один раз прямо по адресу https://, остальные два раза получаем http://. Если я обновляю страницу очень быстро, шаблон меняется один или два раза с http://, затем один раз с https://. Если это страница https://, а ссылки на страницах также являются https, то при переходе по ссылке на странице происходит переход на http.

Я запускаю nginx 1.8.0 и Tomcat 8 с moqui 1.6.2. Я не знаю, сталкивался ли кто-нибудь с этой проблемой также. И я не могу сказать, является ли это проблемой с nginx и tomcat, или что-то с moqui. Очень ценю за любую идею.

1 ответ

Решение

Что вы пытаетесь сделать, всегда проходите через HTTPS (за исключением экранов, которые не требуют этого)?

Если это так, то webapp.@ Https-enabled должен иметь значение true, и для достижения наилучших результатов при генерации URL вы должны также указать ему порты http/https (если нет 80/443) и хосты http/https (все в атрибутах элемента webapp).).

Если проблема заключается не в генерации URL-адреса или перенаправлении в HTTPS для незащищенных запросов, когда для экрана требуется https (для этого нужны параметры элемента webapp), возможно, у вас проблемы с конфигурацией nginx или Tomcat.

Другие вопросы по тегам