server_tokens off; proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g; proxy_connect_timeout 1s; server { listen 80 default; listen [::]:80 default; root ${PATH_STATIC}; error_page 401 /welcome.html; error_page 403 404 /e404.html; error_page 413 404 /e413.html; error_page 500 502 504 /e500.html; location = / { include /etc/nginx/auth.conf; } location = /index.html { include /etc/nginx/auth.conf; } location = /welcome.html { internal; if ($http_accept ~ "^application/json") { rewrite ^/(.*).html$ /$1.json; } } location = /e404.html { internal; if ($http_accept ~ "^application/json") { rewrite ^/(.*).html$ /$1.json; } } location = /e413.html { internal; if ($http_accept ~ "^application/json") { rewrite ^/(.*).html$ /$1.json; } } location = /e500.html { internal; if ($http_accept ~ "^application/json") { rewrite ^/(.*).html$ /$1.json; } } location ~ ^/[A-Z] { include /etc/nginx/auth.conf; rewrite ^/.*$ /index.html; } location /edit { include /etc/nginx/auth.conf; rewrite ^/.*$ /index.html; } location /issue { include /etc/nginx/auth.conf; rewrite ^/.*$ /index.html; } location /issues { include /etc/nginx/auth.conf; rewrite ^/.*$ /index.html; } location /rank { include /etc/nginx/auth.conf; rewrite ^/.*$ /index.html; } location /rules { include /etc/nginx/auth.conf; rewrite ^/.*$ /index.html; } location /tags/ { include /etc/nginx/auth.conf; rewrite ^/.*$ /index.html; } location /register { include /etc/nginx/auth.conf; rewrite ^/.*$ /index.html; } location /files/ { alias ${PATH_FILES}/; sendfile on; tcp_nodelay on; } location /wait.json { include /etc/nginx/auth.conf; root ${PATH_TEAMS}/$team/; expires epoch; add_header Cache-Control no-cache; } location /stats.json { root ${PATH_TEAMS}/; expires epoch; add_header Cache-Control no-cache; } location /my.json { include /etc/nginx/auth.conf; root ${PATH_TEAMS}/$team/; expires epoch; add_header Cache-Control no-cache; if (!-f $document_root/../../startingblock/started) { rewrite ^/ /wait.json; } } location /issues.json { include /etc/nginx/auth.conf; root ${PATH_TEAMS}/$team/; expires epoch; add_header Cache-Control no-cache; } location /teams.json { root ${PATH_TEAMS}; expires epoch; add_header Cache-Control no-cache; } location /themes.json { root ${PATH_TEAMS}; expires epoch; add_header Cache-Control no-cache; } location /settings.json { root ${PATH_SETTINGS}/; expires epoch; add_header X-FIC-time $msec; add_header Cache-Control no-cache; } location /submit/ { include /etc/nginx/auth.conf; rewrite ^/submit/(.*)$ /submission/$team/$1 break; proxy_pass http://${HOST_FRONTEND}/; proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect off; } location /submit/name { include /etc/nginx/auth.conf; rewrite ^/submit/.*$ /chname/$team break; proxy_pass http://${HOST_FRONTEND}/; proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect off; } location /registration { include /etc/nginx/auth.conf; rewrite ^/registration /registration/$team break; proxy_pass http://${HOST_FRONTEND}; proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect off; } location /openhint/ { include /etc/nginx/auth.conf; rewrite ^/openhint/(.*)$ /openhint/$team/$1 break; proxy_pass http://${HOST_FRONTEND}/; proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect off; } location /wantchoices/ { include /etc/nginx/auth.conf; rewrite ^/wantchoices/(.*)$ /wantchoices/$team/$1 break; proxy_pass http://${HOST_FRONTEND}/; proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect off; } location /dashboard/ { proxy_pass http://${HOST_DASHBOARD}; proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect off; } location /api/ { proxy_pass http://${HOST_ADMIN}/admin/api/; proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect off; } location /admin/ { proxy_pass http://${HOST_ADMIN}; proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect off; } location /qa/ { proxy_pass http://${HOST_QA}; proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect off; } location = /events.json { proxy_pass http://${HOST_ADMIN}/api/events/; proxy_method GET; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect off; proxy_cache STATIC; proxy_cache_valid 3s; } }