Настройка Apache2 для доступа к ресурсам веб-приложения на ОС ALT Linux

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

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

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

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

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

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/httpd2/conf/sites-available/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. Создайте символьные ссылки для включения нового сайта в конфигурацию экземпляра Apache2 и подключения модулей headers, rewrite, proxy, env, proxy_http, setenvif:

ln -s /etc/httpd2/conf/sites-available/webserver.conf /etc/httpd2/conf/sites-enabled/webserver.conf
ln -s /etc/httpd2/conf/mods-available/headers.load /etc/httpd2/conf/mods-enabled/headers.load
ln -s /etc/httpd2/conf/mods-available/rewrite.load /etc/httpd2/conf/mods-enabled/rewrite.load
ln -s /etc/httpd2/conf/mods-available/proxy.load /etc/httpd2/conf/mods-enabled/proxy.load
ln -s /etc/httpd2/conf/mods-available/env.load /etc/httpd2/conf/mods-enabled/env.load
ln -s /etc/httpd2/conf/mods-available/proxy_http.load /etc/httpd2/conf/mods-enabled/proxy_http.load
ln -s /etc/httpd2-fp10.x/conf/mods-available/setenvif.load /etc/httpd2-fp10.x/conf/mods-enabled/setenvif.load
ln -s /etc/httpd2-fp10.x/conf/mods-available/headers.load /etc/httpd2-fp10.x/conf/mods-enabled/headers.load
ln -s /etc/httpd2-fp10.x/conf/mods-available/rewrite.load /etc/httpd2-fp10.x/conf/mods-enabled/rewrite.load
  1. Настройте механизм CORS для повышения безопасности системы при обмене данными между разными доменами:

    1. Откройте файл /etc/httpd2-fp10.x/conf/httpd2-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/httpd2/conf/httpd2.conf:

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

Также создайте символьную ссылку для подключения модуля setenvif:

ln -s /etc/httpd2/conf/mods-available/setenvif.load /etc/httpd2/conf/mods-enabled/setenvif.load
  1. Раздайте права доступа httpd2 к файлам веб-приложения:

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

sudo systemctl restart httpd2
sudo systemctl restart httpd2-fp10.x

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

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

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

Где:

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

См. также:

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