upstream gestiocof {
  # Daphne listens on a unix socket
  server unix:/srv/gestiocof/gestiocof.sock;
}

server {
  listen 80;

  server_name localhost;
  root /srv/gestiocof/;

  #  /        → /gestion/
  #  /gestion → /gestion/
  rewrite ^/$         /gestion/;
  rewrite ^/gestion$  /gestion/;

  # Static files
  location /static/ {
    access_log off;
    add_header Cache-Control "public";
    expires 7d;
  }

  # Uploaded media
  location /media/ {
    access_log off;
    add_header Cache-Control "public";
    expires 7d;
  }

  location /gestion/ {
    # A copy-paste of what we have in production
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-SSL-Client-Serial $ssl_client_serial;
    proxy_set_header X-SSL-Client-Verify $ssl_client_verify;
    proxy_set_header X-SSL-Client-S-DN   $ssl_client_s_dn;
    proxy_set_header Daphne-Root-Path /gestion;

    location /gestion/ws/ {
      # See http://nginx.org/en/docs/http/websocket.html
      proxy_buffering off;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      proxy_pass http://gestiocof/ws/;
    }

    location /gestion/ {
      proxy_pass http://gestiocof;
    }
  }
}
