Настройка Apache2 для доступа к ресурсам веб-приложения на RedHat-подобные дистрибутивы

Ниже приведена дополнительная настройка Apache2 для доступа к ресурсам веб-приложения на RedHat-подобные дистрибутивы, если серверная часть веб-приложения была установлена вручную.

Для доступа к ресурсам веб-приложения:

  1. Убедитесь, что веб-приложение распаковано и расположено в папке /opt/foresight/fp/10.x.

  1. Установите веб-сервер Apache2 с помощью команды:

sudo yum install httpd

После установки веб-сервера в РЕД ОС и Rocky Linux:

    1. Создайте файл httpd в каталоге /etc/sysconfig и раздайте права доступа Apache2 к нему:

touch /etc/sysconfig/httpd

    1. Откройте на редактирование конфигурационный файл Apache2 - override.conf, содержащийся в /etc/systemd/system/httpd.service.d:

systemctl edit httpd

После чего вставьте следующие строки в открывшемся файле:

[Service]
EnvironmentFile=/etc/sysconfig/httpd

    1. Перезапустите httpd для применения изменений:

sudo systemctl restart httpd

  1. Укажите путь до папки с установленным веб-приложением и адрес BI-сервера в файле /etc/sysconfig/httpd:

export PATH_TO_WEB=/opt/foresight/fp/10.x
export PP_SOM=http://localhost:8810/fpBI_App_v10.x/axis2/services/PP.SOM.Som

При использовании systemd в качестве системы инициализации для корректной настройки не используйте команду export:

PATH_TO_WEB=/opt/foresight/fp/10.x
PP_SOM=http://localhost:8810/fpBI_App_v10.x/axis2/services/PP.SOM.Som

Примечание. Значение переменной окружения PP_SOM может быть другим, в зависимости от того, где и на каком порту запущен BI-сервер.

  1. Создайте файл /etc/httpd/conf.d/webserver.conf с содержимым:

<VirtualHost *:80>
    Alias /fp10.x/app/ ${PATH_TO_WEB}/app/
    Alias /fp10.x/build/ ${PATH_TO_WEB}/build/
    Alias /fp10.x/dashboard/ ${PATH_TO_WEB}/dashboard/
    Alias /fp10.x/resources/ ${PATH_TO_WEB}/resources/
    Alias /fp10.x/index.html ${PATH_TO_WEB}/index.html
    Alias /fp10.x/libs/ ${PATH_TO_WEB}/libs/
    Alias /fp10.x/ ${PATH_TO_WEB}/
    ProxyPass /fp10.x/app/PPService.axd ${PP_SOM} retry=1 acquire=3000 timeout=6000 Keepalive=On
    RewriteEngine On
    RewriteCond %{QUERY_STRING} (.*(?:^|&))cache(=1)?((?:&|$).*)
    RewriteRule .* - [env=CACHEBLE]
    KeepAlive Off
    <Directory "${PATH_TO_WEB}/">
        Require all granted        
        Options Indexes
        AllowOverride All
        Order allow,deny
        Allow from all
        FileETag None
        SetEnv no-gzip 1
        SetEnv dont-vary 1
        <FilesMatch "\.([^.]+)$">
            Header set Cache-Control "public, max-age=31536000" env=CACHEBLE
            Header set X-Frame-Options "SAMEORIGIN"
            Header set Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval';object-src 'self' <BI-сервер>:<номер порта>;frame-src 'self' <BI-сервер>:<номер порта>; script-src 'self' 'unsafe-inline' 'unsafe-eval';connect-src 'self' ws: wss: data: <BI-сервер>:<номер порта> data:;img-src 'self' data: <BI-сервер>:<номер порта>"
            Header unset Pragma
            Header unset ETag
            UnsetEnv CACHEBLE
        </FilesMatch>
        <FilesMatch "\.cache\.(js|html)$">
            Header set Cache-Control "public, max-age=31536000"
        </FilesMatch>
    </Directory>
</VirtualHost>

В подстановках:

Примечание. Наименование директории «fp10.x» может быть изменено. Для получения подробной информации о настройке виртуальных хостов в Apache2 смотрите официальную документацию.

  1. Настройте механизм CORS для повышения безопасности системы при обмене данными между разными доменами.

    1. Откройте файл /etc/httpd-fp10.x/conf/httpd-fp10.x.conf.

    1. Задайте заголовки Origin, Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers:

<IfModule mod_headers.c>
    SetEnvIf Origin ^(<разрешённый домен>)$ CORS_ALLOW_ORIGIN=$1
    Header always set Access-Control-Allow-Origin %{CORS_ALLOW_ORIGIN}e env=CORS_ALLOW_ORIGIN
    Header merge Vary "Origin"
    Header always set Access-Control-Allow-Methods "POST, OPTIONS, <методы HTTP-запросов>"
    Header always set Access-Control-Allow-Headers "get-ppbi-time, content-type, soapaction, accept-language, cache-control, Authorization, <заголовки HTTP-запросов>"
</IfModule>

RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

В подстановках:

https?://(?:.+\.)?example\.com(?::\d{1,5})?

Данная настройка включает использование механизма CORS на родительском и дочерних ему доменах, а также динамически устанавливается на текущий протокол, домен, порт без использования правил перезаписи;

Примечание. Убедитесь, что указанные параметры механизма CORS соответствуют требованиям используемого ресурса.

  1. Включите запись информации об IP-адресе рабочей станции, с которой осуществляется доступ к объекту, в протоколе доступа менеджера безопасности. Для этого добавьте строки в конце файла /etc/httpd/conf/httpd.conf:

SetEnvIf REMOTE_ADDR "^(.+)$" USER_CLIENT_ADDR=$1
RequestHeader merge userhostaddress "%{USER_CLIENT_ADDR}e"

  1. Раздайте права доступа httpd к файлам веб-приложения:

sudo chown -R apache:apache /opt/foresight/fp/10.x
  1. Перезапустите httpd и httpd-fp10.x:

sudo systemctl restart httpd
sudo systemctl restart httpd-fp10.x

Примечание. Перезапуск httpd-fp10.x выполняется для использования механизма CORS, настроенного в шаге 5.

После выполнения действий откройте веб-приложение по адресу:

http://localhost:80/fp10.x/app/login.html?repo=REPOSITORY_ID

Где:

Если не удаётся авторизоваться, то проверьте работу BI-сервера и его настройки в соответствии со статьей «Установка и настройка BI-сервера на RedHat-подобные дистрибутивы».

См. также:

Установка и настройка BI-сервера на RedHat-подобные дистрибутивы | Ручная установка и настройка Apache2 для доступа к ресурсам веб-приложения