File size: 2,878 Bytes
24b49a4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3923cf3
24b49a4
 
 
 
 
 
 
 
3923cf3
24b49a4
 
3923cf3
 
24b49a4
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Nginx 的主配置块
server {
    # 监听 8080 端口 (这是容器内部的端口,Hugging Face 会把它映射出去)
    listen 8080;
    # 服务器名,这里用 _ 表示接受任意域名,因为 Hugging Face 会分配域名
    server_name _;

    # 处理所有以 /ai/ 开头的请求
    location /ai/ {
        # 关键步骤:重写 URL
        # 这行代码的意思是:
        # ^/ai/(.*)$ : 匹配以 /ai/ 开头的路径,并将 /ai/ 后面的所有内容捕获到变量 $1 中
        # /$1         : 将请求路径替换为捕获到的内容 $1 (即去掉了 /ai/ 前缀)
        # break       : 停止处理后续的 rewrite 规则,并使用当前的 URI 进行后续处理
        rewrite ^/ai/(.*)$ /$1 break;

        # 将重写后的请求转发给你的目标服务器
        # 注意:这里使用 https://cc.cwapi.me
        proxy_pass https://cc.cwapi.me;

        # --- 以下是一些推荐的设置,帮助目标服务器正确识别请求 ---
        # 将原始请求的 Host 头部传递给后端服务器
        proxy_set_header Host $host;
        # 将客户端的真实 IP 地址传递给后端服务器
        proxy_set_header X-Real-IP $remote_addr;
        # 传递客户端请求经过的代理服务器列表
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 告诉后端服务器原始请求是 http 还是 https
        proxy_set_header X-Forwarded-Proto $scheme;

        # 增加缓冲区大小,以防 API 响应过大导致问题 (可选,但有时有用)
        proxy_buffers 16 16k;
        proxy_buffer_size 32k;
    }

    # 处理根路径 / 的请求 (可选,可以给一个提示,避免直接访问时 Nginx 报错)
    location / {
        # 返回一个简单的 404 Not Found 或提示信息
        return 404 'Not Found: Please access via /ai/ path\n';
        # 或者可以返回一个简单的 HTML 页面
        # add_header Content-Type text/html;
        # return 200 '<html><body><h1>Proxy Ready</h1><p>Access your API via /ai/</p></body></html>';
    }

    # (可选) 禁用 Nginx 错误日志输出到控制台,如果你不希望看到 Nginx 自身的错误信息
    # error_log /dev/null crit;
}

# 你可以保留你的 http, events, user 配置,但对于这个简单的反代,
# 上面的 server 块通常放在 http 块内部。
# 如果只用上面的 server 块,Nginx 会使用默认的 user 和 events 设置。
# 一个更完整的结构可能是:
# events { worker_connections 1024; }
# http {
#     # 把上面的 server { ... } 块放在这里
#     server {
#        ...
#     }
#     # error_log /dev/null crit; # 可以放在 http 块里
# }
# 但对于这个 Dockerfile 里的 nginx.conf,只需要上面的 server { ... } 块内容通常就够了。
# Nginx 镜像的默认配置会包含必要的 http 和 events 块。