Система мониторинга Zabbix, а точнее, её веб-интерфейс идёт в комплекте с конфигурационным файлом для веб-сервера Apache.
Для Nginx же в интернете есть множество инструкций, ни одна из которых полноценно у меня не завелась.
В связи с этим была разработана своя конфигурация Nginx, которой я здесь и поделюсь.
1. Установим zabbix по инструкции на официальном сайте https://www.zabbix.com/documentation/3.4/manual/installation/getting_zabbix, где, среди прочего, есть вариант установки zabbix через «apt-get install zabbix», при этом, Apache ставить не нужно!
2. Установим Nginx:
# apt-get install nginx |
3. Создадим конфигурационный файл в /etc/nginx/sites-enabled/zabbix.conf с контентом:
(подразумевается, что домен будет называться zabbix.mihanentalpo.me, разумеется, у вас он будет другой)
server
{
#имя сервера
server_name zabbix.mihanentalpo.me;
#Используем HTTP (пока, скоро перейдём на HTTPS)
listen *:80;
#Корень такой, потому что zabbix лежит в /usr/share/zabbix, а открывается он только по адресу /zabbix
root /usr/share;
# Логи
error_log /var/log/nginx/zabbix-error.log;
access_log /var/log/nginx/zabbix-access.log;
# Этот блок для получения SSL-сертификата Letsencrypt
location ~ /.well-known
{
location ~ /.well-known/acme-challenge/(.*)
{
default_type "text/plain";
root /var/www/letsencrypt;
}
}
# Запретим доступ к скрытым файлам
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# При входе по адресу / перенаправляем в адрес /zabbix - только он и должен работать
location / {
return 301 http://$host/zabbix;
}
# Главная локация - всё что в папке /zabbix
location ~ ^/zabbix/(.+)? {
index index.php;
# Все файлы *.php в этом location обрабатываются через php-fpm
location ~ ^/zabbix/.*\.php(.*)$ {
index index.php;
# Файл сокета, где будет слушать php-fpm
fastcgi_pass unix:/var/run/php5-fpm-zabbix.sock;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}
}
4. Создадим конфигурационный файл для PHP-FPM /etc/php5/fpm/pool.d/zabbix.conf.
Файл создан на базе стандартного файла /etc/php5/fpm/pool.d/www.conf, стандартные комментарии удалены:
[zabbix] ; Пользователь и группа user = zabbix group = www-data ; Файл сокета listen = /var/run/php5-fpm-zabbix.sock ; Пользователь и группа владельца сокета listen.owner = zabbix listen.group = www-data ; Права доступа listen.mode = 0660 ; Менеджер процессов pm = dynamic ; Настройки менеджера процессов pm.max_children = 5 pm.start_servers = 1 pm.min_spare_servers = 1 pm.max_spare_servers = 3 pm.max_requests = 600 ; Ограничиваем расширения только php-файлами security.limit_extensions = .php
5. Перезапустим nginx и php-fpm
service nginx restart service php5-fpm restart |
6. Убедимся что интерфейс открывается по адресу http://zabbix.mihanentalpo.me/zabbix (подставить ваш хост)
7. Теперь получим для вашего хоста SSL-сертификат, чтобы можно было открывать интерфейс по протоколу HTTPS, чем обеспечить невозможность подслушивать ваш сетевой трафик с интерфейсом, в моменты, когда вы пользуетесь им из общедоступных сетей (например через WiFi в кафе) Действовать будем по методу, описанному здесь
8. После получения сертификата нужно изменить конфигурационный файл nginx таким образом, чтобы он мог работать по HTTPS-протоколу:
server
{
# Слушаем 80-й порт чтобы перенаправить пользователя на HTTPS
listen *:80;
server_name zabbix.mihanentalpo.me;
# Перенаправляем на https
return 301 https://$server_name$request_uri;
}
server
{
#имя сервера
server_name zabbix.mihanentalpo.me;
#Используем HTTPS
listen *:443 ssl;
#Настраиваем SSL:
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/letsencrypt/live/mihanentalpo.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mihanentalpo.me/privkey.pem;
#Корень такой, потому что zabbix лежит в /usr/share/zabbix, а открывается он только по адресу /zabbix
root /usr/share;
# Логи
error_log /var/log/nginx/zabbix-error.log;
access_log /var/log/nginx/zabbix-access.log;
# Этот блок для получения SSL-сертификата Letsencrypt
location ~ /.well-known
{
location ~ /.well-known/acme-challenge/(.*)
{
default_type "text/plain";
root /var/www/letsencrypt;
}
}
# Запретим доступ к скрытым файлам
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# При входе по адресу / перенаправляем в адрес /zabbix - только он и должен работать
location / {
return 301 http://$host/zabbix;
}
# Главная локация - всё что в папке /zabbix
location ~ ^/zabbix/(.+)? {
index index.php;
# Все файлы *.php в этом location обрабатываются через php-fpm
location ~ ^/zabbix/.*\.php(.*)$ {
index index.php;
# Файл сокета, где будет слушать php-fpm
fastcgi_pass unix:/var/run/php5-fpm-zabbix.sock;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}
}
Оставить комментарий