Программные продукты ISPsystem 5-го поколения работают через встроенный веб-сервер — ihttpd. Подробнее о настройке веб-сервера см. Настройка встроенного веб-сервера (ihttpd).

Веб-сервер ihttpd не имеет понятия "виртуальный сервер", что значит что он не может различать запросы по полю "Host" заголовка запроса. Все полученные запросы ihttpd передаёт ядру программного продукта.

Из-за этого панель управления доступна по любому домену, который разрешается в IP-адрес, который слушает ihttpd.

Например, на сервере ihttpd прослушивает адрес 10.10.10.10 и порт 1500. Если направить домен domain.com в DNS на 10.10.10.10, то по адресу https://domain.com:1500/ будет открываться панель управления.

Nginx


При необходимости можно настроить, так чтобы панель управления работала через связку Nginx + ihttpd.

Для этого в файл конфигурации Nginx добавляем server:

server {
 	listen 10.10.10.10:443;
 	server_name 10.10.10.10;
 	ssl on;
 	ssl_certificate /usr/local/mgr5/etc/manager.crt;
 	ssl_certificate_key /usr/local/mgr5/etc/manager.key;
         client_max_body_size 20m;

set $mgr_proxy "https://10.10.10.10:1500";

location ^~ /manimg/ {
 		alias /usr/local/mgr5/skins/;
 	}
 	location / {
 		proxy_pass $mgr_proxy;
 		proxy_redirect $mgr_proxy /;
 		proxy_set_header Host $host:$server_port;
 		proxy_set_header X-Forwarded-For $remote_addr;
 		proxy_set_header X-Forwarded-Proto $scheme;
 		proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header X-Forwarded-Secret <произвольный набор символов>;
  		chunked_transfer_encoding off;
  	}

location ^~ /mancgi/ {
 	        proxy_pass $mgr_proxy;
 	        proxy_redirect $mgr_proxy /;
 	        proxy_set_header Host $host:$server_port;
 	        proxy_set_header X-Forwarded-For $remote_addr;
 	        proxy_set_header X-Forwarded-Proto $scheme;
 	        proxy_set_header X-Real-IP $remote_addr;
 	        proxy_set_header X-Forwarded-Secret <произвольный набор символов>;
 	        chunked_transfer_encoding off;
 	}
 }
CODE

client_max_body_size — директива, которая указывает файлы какого размера Nginx сможет передавать в панель. Например, это нужно для работы "Менеджера файлов" в ISPmanager. Укажите здесь нужное значение.

Если вы настраиваете панель BILLmanager и используете интерфейс BILLmanager 6, то следует добавить ещё одну секцию:

location ^~ /api2/{
 	        proxy_pass $mgr_proxy;
 	        proxy_redirect $mgr_proxy /;
 	        proxy_set_header Host $host:$server_port;
 	        proxy_set_header X-Forwarded-For $remote_addr; 
                 proxy_set_header X-Forwarded-Proto $scheme;
 	        proxy_set_header X-Real-IP $remote_addr;
 	        proxy_set_header X-Forwarded-Secret <произвольный набор символов>;
 	        chunked_transfer_encoding off;
 	}
CODE

В файл конфигурации COREmanager и в файл конфигурации панели управления следует добавить директиву ForwardedSecret.

Например:

ForwardedSecret mary123
CODE

ForwardedSecret — ключ, необходимый для того, чтобы ihttpd доверял запросам от Nginx и записывал в лог-файл IP-адрес клиента, а не сервера. Представляет собой набор букв и цифр. Если не указать эту директиву, то любой сможет подключиться к ihttpd и указать произвольный адрес клиента в запросе. Другими словами, ForwardedSecret необходим для защиты от подмены IP-адреса клиента.

Обратите внимание!

Секретная фраза, указанная в файле конфигурации nginx — директива proxy_set_header X-Forwarded-Secret, должна совпадать с фразой, указанной в файлах конфигурации панелей управления — директива ForwardedSecret.

После выполнения изменений перезапустите Nginx и панель управления:

killall core
CODE

SPDY

Если вы используете SDPY протокол, то для корректной работы добавьте директивы:

proxy_set_header User-Agent $http_user_agent;
proxy_set_header Accept $http_accept;
proxy_set_header Accept-Language $http_accept_language;
proxy_set_header ISP-Client $http_isp_client;
proxy_set_header Referer $http_referer;
proxy_set_header Content-Type $http_content_type;
proxy_set_header Cookie $http_cookie;
proxy_set_header Pragma $http_pragma;
proxy_set_header Cache-Control $http_cache_control;
proxy_set_header Accept-Encoding $http_accept_encoding;
RAW Paste Data
CODE

Apache


Вы можете настроить работу панели управления через веб-сервер Apache с проксированием на ihttpd.

В Apache должны быть подключены модули:

  • proxy_module;
  • proxy_connect_module;
  • proxy_http_module.

В файле конфигурации Apache создайте VirtualHost:

<VirtualHost 10.10.10.10:80>
        ServerName domain.com
        ServerAlias www.domain.com
        Redirect / https://domain.com/
</VirtualHost>

<VirtualHost 10.10.10.10:443>
        ServerName domain.com
        ServerAlias www.domain.com

SSLProxyEngine on
        SSLProxyVerify none
        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerName off

SSLEngine On
        SSLCertificateFile /usr/local/mgr5/etc/manager.crt
        SSLCertificateKeyFile /usr/local/mgr5/etc/manager.key

ProxyRequests Off
        ProxyPreserveHost On
        ProxyVia full

RequestHeader set X-Forwarded-Secret <произвольный набор символов>
        RequestHeader set X-Forwarded-For $remote_addr

<proxy *>
        Order deny,allow
        Allow from all
        </proxy>

ProxyPass / https://10.10.10.10:1500/
        ProxyPassReverse / https://10.10.10.10:1500/
</VirtualHost>
CODE

Чтобы применить конфигурацию Apache:

apachectl graceful
CODE

Добавьте в файлы конфигурации COREmanager и панели управления директиву ForwardedSecret.

Например:

ForwardedSecret mary123
CODE

Значение ForwardedSecret в файлах конфигурации панели и COREmanager должно совпадать со значением, указанным в директиве RequestHeader set X-Forwarded-Secret в файле конфигурации Apache.

После изменений в файлах конфигурации COREmanager и панели управления, перезапустите панель командой:

killall core
CODE

Для правильной работы с SSL-сертификатом панели пропишите в конфигурационном файле /usr/local/mgr5/etc/ihttpd.conf информацию о сертификате:

listen {
        ip 10.10.10.10
        redirect
        sni {
                domain_cert /usr/local/mgr5/etc/manager.crt
                domain_key /usr/local/mgr5/etc/manager.key
                domains domain.com
        }
}
CODE