$OpenBSD: README-web,v 1.12 2018/09/05 09:24:31 espie Exp $

+-----------------------------------------------------------------------
| Running zabbix-web on OpenBSD
+-----------------------------------------------------------------------

The Zabbix web frontend has been installed into
/var/www/zabbix

Zabbix Web can work with a PostgreSQL, MySQL or SQLite3 database.
Support for SQLite3 is included with the main php package; to use
another database, the corresponding package needs to be installed:
    php-pgsql or php-mysqli

Zabbix requires a timezone to be configured in PHP; zabbix.ini
sets this to UTC, you may like to adjust this. After making these
changes, stop and start your webserver.

Finally, edit /var/www/zabbix/conf/zabbix.conf.php according to your needs.
Below are instructions for setting up Zabbix Web with Apache or NGINX.

Apache
======

You should point this to the DocumentRoot of your web-server:
    # ln -s ../zabbix /var/www/htdocs/zabbix
(make sure you use a relative symlink since Apache is chrooted)

The web frontend works reasonably well with OpenBSD's chroot'ed
httpd (the "Status of Zabbix" page uses /bin/ps and /dev/kmem to
check the process, so it erroneously reports it as not running).
Some changes from the default configuration are required -
you can do this by creating symbolic links as follows:

    # ln -s /var/www/conf/modules.sample/zabbix.conf \
      /var/www/conf/modules

    # ln -fs /etc/php-7.3.sample/zabbix.ini \
      /etc/php-7.3/zabbix.ini

NGINX
=====

First install and enable php-fpm and enable the required modules:

    # cd /etc/php-7.3.sample
    # for i in *; do ln -fs ../php-7.3.sample/$i ../php-7.3/; done

Next configure a nginx such as:

server {                         
  listen        80;              
  server_name   zabbix.example.com;
  root          /var/www/zabbix;
  index         index.php;                             
  error_page    403 404 502 503 504  /zabbix/index.php;
  
  location ~ \.php {                                                         
    fastcgi_pass        unix:run/php-fpm.sock;
    fastcgi_index       index.php;     
    fastcgi_param       DOCUMENT_ROOT $document_root;
    fastcgi_param       SCRIPT_FILENAME $request_filename;
    include             fastcgi_params;
  }                   
  location ~ \.(jpg|jpeg|gif|png|ico)$ {
     access_log      off;
     expires         33d;
  }
  location ~ ^\.ht {
    deny        all;
  }
}

httpd.conf(5)
=============

server "zabbix.example.com" {
	listen on * 80
	listen on * tls port 443
	directory { index "index.php" }

	tls {
		certificate "/etc/ssl/acme/zabbix.example.com_fullchain.pem"
		key "/etc/ssl/acme/private/zabbix.example.com_private.pem"
	}

	# Increase connection limits to extend the lifetime
	connection { max requests 500, timeout 3600 }
	connection { max request body 8388608 }

	location "/conf/*" {
		block return 401
	}

	location "*.php" {
		fastcgi socket "/run/php-fpm.sock"
	}
	root "/zabbix"
}

