=== Full nginx config ===
# xique0755.cn - 喜雀官网 HTTPS配置
# HTTP -> HTTPS 301重定向
server {
    listen 80;
    server_name xique0755.cn www.xique0755.cn;

    location /.well-known/acme-challenge/ {
        root /var/www/xique0755.cn;
        allow all;
    }

    # 流量速算引擎 (8232)
    location /api/traffic-engine/ {
        proxy_pass http://127.0.0.1:8232/;
        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 $scheme;
        proxy_read_timeout 30s;
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
        add_header Access-Control-Allow-Headers "Content-Type" always;
        if ($request_method = OPTIONS) {
            return 204;
        }
    }


    # Hotel Investment Advisor proxy
    location /api/investment/ {
        proxy_pass http://127.0.0.1:8235;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 120s;
    }
    # 统一认证中心 (端口8236)
    location /api/auth/ {
        proxy_pass http://127.0.0.1:8236/api/auth/;
        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 $scheme;
        proxy_read_timeout 30s;
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
        add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
        if ($request_method = OPTIONS) {
            return 204;
        }
    }

    # 统一登录页
    location = /login {
        return 301 https://$host/login;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

# HTTPS主配置
server {
    listen 443 ssl http2;
    server_name xique0755.cn;

    ssl_certificate /etc/letsencrypt/live/xique0755.cn/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/xique0755.cn/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    include snippets/security-headers.conf;

    root /var/www/xique0755.cn;

    # 试用注册平台
    location /trial {
        proxy_pass http://127.0.0.1:8187/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 10m;
    }

    location /api/register {
        proxy_pass http://127.0.0.1:8187/api/register;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /api/upload-license {
        proxy_pass http://127.0.0.1:8187/api/upload-license;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        client_max_body_size 10m;
    }

    location /api/admin/ {
        proxy_pass http://127.0.0.1:8187/api/admin/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /api/stats {
        proxy_pass http://127.0.0.1:8187/api/stats;
        proxy_set_header Host $host;
    }

    location /uploads/ {
        proxy_pass http://127.0.0.1:8187/uploads/;
        proxy_set_header Host $host;
    }

    # 酒店登录页(短路径)
    location /hotel-login {
        alias /opt/xique-pms/;
        try_files /hotel_login.html =404;
    }

    # SMS验证码API
    location /api/send-sms-code {
        proxy_pass http://127.0.0.1:8187/api/send-sms-code;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /api/verify-sms-code {
        proxy_pass http://127.0.0.1:8187/api/verify-sms-code;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 统一登录页
    location = /login {
        try_files /unified-login.html =404;
    }

    index index.html index.htm;

    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;
    gzip_min_length 1000;


    # PMS登录页
    
# 满房大师入口
location /manfang {
    proxy_pass http://127.0.0.1:8094/pms;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}location /pms-login {
        alias /opt/xique-pms/;
        try_files /hotel_login.html =404;
    }

    # PMS登录API
    location /api/hotel/login {
        proxy_pass http://127.0.0.1:8094/api/hotel/login;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
        add_header Access-Control-Allow-Headers "Content-Type" always;
        if ($request_method = OPTIONS) {
            return 204;
        }
    }

    # PMS酒店管理系统
    location /pms {
        proxy_pass http://127.0.0.1:8094/pms;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # 满房大师入口
    location /manfang {
        proxy_pass http://127.0.0.1:8094/pms;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # PMS密码修改API
    location /api/hotel/change-password {
        proxy_pass http://127.0.0.1:8094/api/hotel/change-password;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # ===== API Proxy for Brain Command Center =====
    # AI Brain Hub (8220)
    location /api/v1/brain/ {
        proxy_pass http://127.0.0.1:8220;
        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 $scheme;
        proxy_read_timeout 120s;
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
        add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
        if ($request_method = OPTIONS) {
            return 204;
        }
    }

    # 满房大师 (8091)
    location /api/manfang/ {
        proxy_pass http://127.0.0.1:8091/api/;
        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 $scheme;
        proxy_read_timeout 30s;
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
        add_header Access-Control-Allow-Headers "Content-Type" always;
        if ($request_method = OPTIONS) {
            return 204;
        }
    }

    # 事件总线 (8097)
    location /api/eventbus/ {
        proxy_pass http://127.0.0.1:8097/api/;
        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 $scheme;
        proxy_read_timeout 30s;
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
        add_header Access-Control-Allow-Headers "Content-Type" always;
        if ($request_method = OPTIONS) {
            return 204;
        }
    }

    # 流量速算引擎 (8232)
    location /api/traffic-engine/ {
        proxy_pass http://127.0.0.1:8232/;
        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 $scheme;
        proxy_read_timeout 30s;
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
        add_header Access-Control-Allow-Headers "Content-Type" always;
        if ($request_method = OPTIONS) {
            return 204;
        }
    }


    # 酒店医生智能诊断引擎 (8233)
    location /api/hotel-doctor/ {
        proxy_pass http://127.0.0.1:8233/api/hotel-doctor/;
        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 $scheme;
        proxy_read_timeout 120s;
    }

    # OTA视觉优化引擎 (8234)
    location /api/ota-visual/ {
        proxy_pass http://127.0.0.1:8234/api/ota-visual/;
        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 $scheme;
        proxy_read_timeout 120s;
    }

    # 统一认证中心 (端口8236)
    location /api/auth/ {
        proxy_pass http://127.0.0.1:8236/api/auth/;
        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 $scheme;
        proxy_read_timeout 30s;
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
        add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
        if ($request_method = OPTIONS) {
            return 204;
        }
    }



    # Hotel Investment Advisor proxy
    location /api/investment/ {
        proxy_pass http://127.0.0.1:8235;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 120s;
    }

    # 预约线索收集 (8240)
    location /api/lead/ {
        proxy_pass http://127.0.0.1:8240/api/lead/;
        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_read_timeout 30s;
        add_header Access-Control-Allow-Origin * always;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
        add_header Access-Control-Allow-Headers "Content-Type" always;
        if ($request_method = OPTIONS) { return 204; }
    }
    location / {
        try_files $uri $uri/ =404;
    }

    location /about {
        try_files /about.html =404;
    }

    location /contact {
        try_files /contact.html =404;
    }
        location /leads { try_files /leads.html =404; }
    location /portal {
        try_files /portal.html =404;
    }


    location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff2|woff|ttf)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

# www -> 裸域名 (HTTPS)
server {
    listen 443 ssl http2;
    server_name www.xique0755.cn;

    ssl_certificate /etc/letsencrypt/live/xique0755.cn/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/xique0755.cn/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    return 301 https://xique0755.cn$request_uri;
}

=== Check if hotel-login.html exists in static dir ===
Not found in static
-rw-r--r-- 1 root root 15089 Aug  2 15:07 /opt/xique-pms/hotel_login.html
-rw-r--r-- 1 root root  4321 Aug  2 10:27 /opt/xique-pms/hotel_login.html.bak
-rw-r--r-- 1 root root  6025 Aug  2 13:55 /opt/xique-pms/hotel_login.html.bak.20260802135548
-rw-r--r-- 1 root root 17420 Aug  2 13:57 /opt/xique-pms/hotel_login.html.bak.20260802135706
-rw-r--r-- 1 root root 14938 Aug  2 15:05 /opt/xique-pms/hotel_login.html.bak.20260802_150531