Пустой контент Liferay 6 в iframe после изменения конфигурации Apache - PullRequest
0 голосов
/ 04 марта 2019

Я новичок и унаследовал платформу Liferay 6, которая действует как корпоративный портал, он также содержит некоторые iframes, которые прокси для внешних приложений (на других серверах).

Каждый iframe использует виртуальный хост на своемпорт на Apache, затем запрос перенаправляется (проксируется) на сервер приложений Wright.

Фактическая конфигурация:

  • Os CentOS 6x64
  • Liferay 6 + Apache2.2
  • имя сервера: portal.example.com
  • URL-адрес примера iframe: https://portal.example.com:1045/app1/j_security_check
  • j_security_check используется для передачи аутентификации пользователя приложению, поэтому оно открываетсянапрямую.
  • на Apache есть виртуальный хост для каждого iframe, подобный этому:
<VirtualHost *:1045>
ServerName                portail.example.com
SSLEngine                 on
SSLCertificateFile        /etc/httpd/ssl/commercial.crt
SSLCertificateKeyFile     /etc/httpd/ssl/commercial.key
SSLCACertificateFile  /etc/httpd/ssl/commercial_ca.pem
ProxyPass                 /app1  http://192.168.1.10:7777/app1
ProxyPassReverse      /app1  http://192.168.1.10:7777/app1
</VirtualHost>

И на портале много таких перенаправлений,и, как вы можете видеть, для каждого приложения в Apache используется новый порт.

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

прослушивание 443

имя_сервера portal.example.com

    <Proxy *>
            Require all granted
    </Proxy>

    SSLEngine on
    SSLCertificateFile      /etc/httpd/ssl/commercial.crt
    SSLCertificateKeyFile   /etc/httpd/ssl/commercial.key
    SSLCACertificateFile    /etc/httpd/ssl/commercial_ca.pem

    # App1
    ProxyPass        /app1  http://192.168.1.10:7777/app1
    ProxyPassReverse /app1  http://192.168.1.10:7777/app1

    # App2
    ProxyPass        /app2  http://192.168.1.10:7777/app2
    ProxyPassReverse /app2  http://192.168.1.10:7777/app2

    # App3
    ProxyPass        /app3  http://192.168.1.15/app3
    ProxyPassReverse /app3  http://192.168.1.15/app3

    # Main Site
    ProxyPass        /  http://localhost:8080/ retry=0 Keepalive=On timeout=1600
    ProxyPassReverse /  http://localhost:8080/
    setenv proxy-initial-not-pooled 1

    RemoteIPHeader X-Forwarded-For

При использовании новой конфигурации мыget:

  1. Если параметр j_security_check передается с URL-адресом iframe после аутентификации пользователя на портале: мы получаем пустую страницу, если мы ее удаляем, iframe перезагружается, и приложение отображается и открывается.
  2. Если j_security_check не передается после аутентификации пользователя, приложение отображается в iframe, но мы получаем страницу входа приложения, если мы аутентифицируемся, мы должны обновить страницу (F5), чтобыприложение откроется.
  3. Если мы получим доступ к приложению напрямую по прокси-адресу: https://portal.example.com/app1, мы получим страницу входа приложения.

Итак, в заключение:

  1. Похоже, что прокси-сервер выполняет свою работу, поскольку мы видим страницу приложения.
  2. j_security_check проходит аутентификацию пользователя, но я не вижуошибка, которая может объяснить, почему приложение не отображается в iframe.
  3. Почему при использовании разных портов на многих виртуальных хостах оно работает, а при использовании на виртуальном хосте и прокси-сервере все приложения - нет?

Я пытался использовать:

  • CentOS 7 и Apache 2.4
  • CentOS 7 и Nginx 1.12
  • CentOS 6 и Apache 2.2

И это то же самое поведение.

С уважением.

...