user nobody; worker_processes auto; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; sendfile on; keepalive_timeout 65; # Allow gzipping js, css, log, svg and json files. gzip on; gzip_buffers 16 8k; gzip_comp_level 6; gzip_http_version 1.0; gzip_min_length 1100; gzip_proxied any; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript image/gif image/jpeg image/png application/json image/svg+xml; types { text/plain log; } server { listen 80 default_server; root /usr/local/share/poudriere/html; ## Allow caching static resources location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|woff|css|js|html)$ { add_header Cache-Control "public"; expires 2d; } ## pkg index location /pkg { autoindex on; alias /usr/local/poudriere/data/packages; } ## log data location /data { alias /usr/local/poudriere/data/logs/bulk; # Allow caching dynamic files but ensure they get rechecked location ~* ^.+\.(log|txz|tbz|bz2|gz)$ { add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } # Don't log json requests as they come in frequently and ensure # caching works as expected location ~* ^.+\.(json)$ { add_header Cache-Control "public, must-revalidate, proxy-revalidate"; access_log off; log_not_found off; } # Allow indexing only in log dirs location ~ /data/?.*/(logs|latest-per-pkg)/ { autoindex on; } break; } } }