nginx configuration

This example describes how to set up nginx for serving content generated by munin.

This document describes two alternative configurations:

  1. serving static graphs and HTML generated by munin-cron
  2. proxy traffic to munin-httpd

Serving cron-made graphs and HTML

Nginx is quite good at serving static files, and as such the configuration is mostly in place already.

The paths are as in use on a Debian Linux system. Add the following to /etc/nginx/sites-enabled/default:

location /munin/static/ {
        alias /etc/munin/static/;
        expires modified +1w;

location /munin/ {
        auth_basic            "Restricted";
        # Create the htpasswd file with the htpasswd tool.
        auth_basic_user_file  /etc/nginx/htpasswd;

        alias /var/cache/munin/www/;
        expires modified +310s;

For Zoom to work you also need to add the following to the same configuration file:

  location ^~ /munin-cgi/munin-cgi-graph/ {
   access_log off;
   fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
   fastcgi_param PATH_INFO $fastcgi_path_info;
   fastcgi_pass unix:/var/run/munin/fcgi-graph.sock;
   include fastcgi_params;

If this is a dedicated Munin server, you might want to redirect the front page as well:

location / {
        rewrite ^/$ munin/ redirect; break;

Using munin-httpd

You can use nginx as a proxy in front of munin-httpd.

This enables you to add transport layer security and http authentication (not included in this example).

location /munin/static/ {
    alias /etc/munin/static/;

location /munin/ {
    proxy_pass http://localhost:4948/;