server {
    listen 443 ssl;
    http2 on;
    server_name ether.labunix.xyz;

    ssl_certificate     /etc/letsencrypt/live/labunix.xyz/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/labunix.xyz/privkey.pem;

    limit_req zone=etherpad_req burst=60 nodelay;
    limit_conn etherpad_conn 20;
    client_max_body_size 1m;
# Admin only (protect both /admin and /admin/)
    location = /admin {
        auth_basic "Etherpad Admin";
        auth_basic_user_file /etc/nginx/htpasswd-etherpad-admin;

        proxy_pass http://127.0.0.1:9001;
        proxy_set_header Host $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 https;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 120s;
        proxy_send_timeout 120s;
        proxy_buffering off;
    }

    location ^~ /admin/ {
        auth_basic "Etherpad Admin";
        auth_basic_user_file /etc/nginx/htpasswd-etherpad-admin;

        proxy_pass http://127.0.0.1:9001;
        proxy_set_header Host $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 https;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 120s;
        proxy_send_timeout 120s;
        proxy_buffering off;
    }
    location / {
        proxy_pass http://127.0.0.1:9001;

        proxy_set_header Host $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 https;

        proxy_http_version 1.1;
	proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 120s;
        proxy_send_timeout 120s;
        proxy_buffering off;
    }
}
