Running pd3f in production with nginx

An example config for nginx to run in conjunction with

# prevent guessing of file names / URLs
limit_req_zone $binary_remote_addr zone=limitfiles:10m rate=1r/s;

server {
    client_max_body_size 50M;

    if ($request_method !~ ^(GET|HEAD|POST)$ )
        return 405;

    location /files/ {
        limit_req zone=limitfiles burst=2 nodelay;

        add_header Content-disposition "attachment";
        alias /var/pd3f/data/pd3f-data-uploads/;

    location ~ /(update|result)/ {
        limit_req zone=limitfiles burst=2 nodelay;


    location / {
        # simple frontend caching
        expires 10m;
        add_header Cache-Control "public";


    # restrict access to dashboard to IP address (or subnet) + protect with Basic Auth
    location /dashboard/ {
        limit_req zone=limitfiles burst=20 nodelay;

        allow xx.xx.xx.xx;
        deny all;

        auth_basic "Private Area";
        auth_basic_user_file /path/to/.htpasswd;


Make sure set to set the correct permission to let nginx serve the static files (in /var/pd3f/data/pd3f-data-uploads/).

Common Problems

If there are problems with rq (the queue), just remove the image:

docker rm root_redis_1

This will clean all data in redis.