events {
    worker_connections 1024;
}

http {
    upstream lemmy-alpha {
        server "lemmy-alpha:8541";
    }
    upstream lemmy-alpha-ui {
        server "lemmy-alpha-ui:1234";
    }
    server {
        listen 8540;
        server_name 127.0.0.1;
        access_log  off;

        # Upload limit for pictshare
        client_max_body_size 50M;

        location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) {
            proxy_pass http://lemmy-alpha;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
        location / {
            set $proxpass http://lemmy-alpha-ui;
            if ($http_accept = "application/activity+json") {
              set $proxpass http://lemmy-alpha;
            }
            proxy_pass $proxpass;

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            # Cuts off the trailing slash on URLs to make them valid
            rewrite ^(.+)/+$ $1 permanent;
        }
        location /iframely/ {
            proxy_pass http://iframely:80/;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

    upstream lemmy-beta {
        server "lemmy-beta:8551";
    }
    upstream lemmy-beta-ui {
        server "lemmy-beta-ui:1234";
    }
    server {
        listen 8550;
        server_name 127.0.0.1;
        access_log off;

        # Upload limit for pictshare
        client_max_body_size 50M;

        location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) {
            proxy_pass http://lemmy-beta;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
        location / {
            set $proxpass http://lemmy-beta-ui;
            if ($http_accept = "application/activity+json") {
              set $proxpass http://lemmy-beta;
            }
            proxy_pass $proxpass;

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            # Cuts off the trailing slash on URLs to make them valid
            rewrite ^(.+)/+$ $1 permanent;
        }
        location /iframely/ {
            proxy_pass http://iframely:80/;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

    upstream lemmy-gamma {
        server "lemmy-gamma:8561";
    }
    upstream lemmy-gamma-ui {
        server "lemmy-gamma-ui:1234";
    }
    server {
        listen 8560;
        server_name 127.0.0.1;
        access_log off;

        # Upload limit for pictshare
        client_max_body_size 50M;

        location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) {
            proxy_pass http://lemmy-gamma;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
        location / {
            set $proxpass http://lemmy-gamma-ui;
            if ($http_accept = "application/activity+json") {
              set $proxpass http://lemmy-gamma;
            }
            proxy_pass $proxpass;

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            # Cuts off the trailing slash on URLs to make them valid
            rewrite ^(.+)/+$ $1 permanent;
        }
        location /iframely/ {
            proxy_pass http://iframely:80/;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

    upstream lemmy-delta {
        server "lemmy-delta:8571";
    }
    upstream lemmy-delta-ui {
        server "lemmy-delta-ui:1234";
    }
    server {
        listen 8570;
        server_name 127.0.0.1;
        access_log off;

        # Upload limit for pictshare
        client_max_body_size 50M;

        location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) {
            proxy_pass http://lemmy-delta;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
        location / {
            set $proxpass http://lemmy-delta-ui;
            if ($http_accept = "application/activity+json") {
              set $proxpass http://lemmy-delta;
            }
            proxy_pass $proxpass;

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            # Cuts off the trailing slash on URLs to make them valid
            rewrite ^(.+)/+$ $1 permanent;
        }
        location /iframely/ {
            proxy_pass http://iframely:80/;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

    upstream lemmy-epsilon {
        server "lemmy-epsilon:8581";
    }
    upstream lemmy-epsilon-ui {
        server "lemmy-epsilon-ui:1234";
    }
    server {
        listen 8580;
        server_name 127.0.0.1;
        access_log off;

        # Upload limit for pictshare
        client_max_body_size 50M;

        location ~ ^/(api|docs|pictrs|feeds|nodeinfo|.well-known) {
            proxy_pass http://lemmy-epsilon;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
        location / {
            set $proxpass http://lemmy-epsilon-ui;
            if ($http_accept = "application/activity+json") {
              set $proxpass http://lemmy-epsilon;
            }
            proxy_pass $proxpass;

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            # Cuts off the trailing slash on URLs to make them valid
            rewrite ^(.+)/+$ $1 permanent;
        }
        location /iframely/ {
            proxy_pass http://iframely:80/;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}