# Nginx配置文件
# 适用于Ubuntu 24.04 - 前端静态资源服务
# 文件位置: /etc/nginx/sites-available/h5test

server {
    # 监听端口
    listen 8081;
    listen [::]:8081;

    # 如果需要HTTPS，取消注释以下行并配置SSL证书
    # listen 443 ssl http2;
    # listen [::]:443 ssl http2;
    # ssl_certificate /path/to/your/certificate.crt;
    # ssl_certificate_key /path/to/your/private.key;

    # 服务器名称 - 支持通配符子域名
    # 匹配任意前缀的-h5.offerpluscn.com
    server_name ~^(.+)-h5\.offerpluscn\.com$;

    # 字符编码
    charset utf-8;

    # 访问日志和错误日志
    access_log /var/log/nginx/vsrah5_access.log;
    error_log /var/log/nginx/vsrah5_error.log;

    # 网站根目录
    root /var/www/html/vsrah5;

    # 默认首页文件
    index index.html index.htm;

    # 渠道代码重定向配置
    # 匹配 /campaign/202510SMCC{渠道代码} 并重定向到 /campaign/202510SMCC
    location ~ ^/campaign/202510SMCC(.+)$ {
        return 301 /campaign/202510SMCC;
    }

    # 主要位置配置
    location / {
        # 尝试提供文件，如果不存在则返回index.html（支持SPA应用）
        try_files $uri $uri/ /index.html;

        # 禁用目录列表
        autoindex off;
    }

    # 静态资源缓存配置
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
        access_log off;
    }

    # 安全头部配置
    # X-Frame-Options: 防止点击劫持
    add_header X-Frame-Options "SAMEORIGIN" always;

    # X-Content-Type-Options: 防止MIME类型嗅探
    add_header X-Content-Type-Options "nosniff" always;

    # X-XSS-Protection: 启用XSS过滤
    add_header X-XSS-Protection "1; mode=block" always;

    # Referrer-Policy: 控制referrer信息
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    # Content-Security-Policy: 内容安全策略（根据需要调整）
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https:;" always;

    # Permissions-Policy: 权限策略
    add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), interest-cohort=()" always;

    # 注意: HSTS (HTTP Strict Transport Security) 仅在HTTPS下有效
    # 由于您要求HTTP服务，这里注释掉HSTS配置
    # 如果将来启用HTTPS，可以取消注释以下行：
    # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    # 隐藏nginx版本号
    server_tokens off;

    # 限制请求体大小（根据需要调整）
    client_max_body_size 10M;

    # 超时设置
    client_body_timeout 12;
    client_header_timeout 12;
    keepalive_timeout 15;
    send_timeout 10;

    # Gzip压缩配置
    gzip on;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss application/rss+xml application/atom+xml image/svg+xml application/x-font-ttf application/vnd.ms-fontobject font/opentype;
    gzip_min_length 256;
    gzip_disable "msie6";

    # 禁止访问隐藏文件（以.开头的文件，除了.well-known）
    location ~ /\.(?!well-known) {
        deny all;
        access_log off;
        log_not_found off;
    }

    # 禁止访问某些文件类型
    location ~* \.(log|bak|sql|old|orig|original|php#|php~|php_bak|save|swo|swp|sh)$ {
        deny all;
        access_log off;
        log_not_found off;
    }

    # 404错误页面（可选，如果有自定义404页面）
    error_page 404 /404.html;
    location = /404.html {
        internal;
    }

    # 50x错误页面
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        internal;
    }
}