Программные продукты 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;
}
}
Если вы настраиваете панель 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;
}
В файл конфигурации COREmanager и в файл конфигурации панели управления следует добавить директиву ForwardedSecret.
Например:
ForwardedSecret mary123
После выполнения изменений перезапустите Nginx и панель управления:
killall core
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
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>
Чтобы применить конфигурацию Apache:
apachectl graceful
Добавьте в файлы конфигурации COREmanager и панели управления директиву ForwardedSecret.
Например:
ForwardedSecret mary123
Значение ForwardedSecret в файлах конфигурации панели и COREmanager должно совпадать со значением, указанным в директиве RequestHeader set X-Forwarded-Secret в файле конфигурации Apache.
После изменений в файлах конфигурации COREmanager и панели управления, перезапустите панель командой:
killall core
Для правильной работы с 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
}
}