# Enable only after DNS and the dedicated certificate have been verified.
server {
    listen 80;
    listen [::]:80;
    server_name yunkong.xueshang.xyz;
    location ^~ /.well-known/acme-challenge/ {
        root /var/www/xueshang-yunkong/acme;
        default_type text/plain;
        try_files $uri =404;
    }
    location / { return 301 https://yunkong.xueshang.xyz$request_uri; }
}
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name yunkong.xueshang.xyz;
    ssl_certificate /etc/letsencrypt/live/yunkong.xueshang.xyz/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yunkong.xueshang.xyz/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/xueshang-yunkong/current;
    index index.html;
    autoindex off;
    add_header X-Content-Type-Options nosniff always;
    add_header Referrer-Policy no-referrer always;
    add_header Cache-Control "no-cache" always;
    add_header Strict-Transport-Security "max-age=15552000" always;
    location ^~ /api/ {
        client_max_body_size 8k;
        client_body_timeout 5s;
        limit_req zone=yunkong_api burst=20 nodelay;
        limit_conn yunkong_api_conn 16;
        limit_req_status 429;
        limit_conn_status 429;
        add_header X-Content-Type-Options nosniff always;
        add_header Referrer-Policy no-referrer always;
        add_header Strict-Transport-Security "max-age=15552000" always;
        proxy_pass http://127.0.0.1:17826;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_connect_timeout 5s;
        proxy_read_timeout 25s;
        proxy_buffering off;
        proxy_cache off;
        add_header Cache-Control "no-store" always;
    }
    location / {
        try_files $uri $uri/ =404;
        limit_except GET { deny all; }
    }
}
