Настройка адреса панели управления

Материал из ISPWiki
Перейти к: навигация, поиск

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

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

Например, на сервере ihttpd прослушивает адрес 10.10.10.10 и порт 1500. Если направить домен domain.com в днс на 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 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;
 	}

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

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

Например:

ForwardedSecret mary123

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

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

После выполнения изменений не забудьте перезапустить nginx и панель управления. Перезапустить панель управления можно командой

killall core

SPDY

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

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
        }
}