更新:在故障大约 1 天后,Cloudflare CDN 已修复问题,所有使用 Cloudflare CDN 的哪吒 V1 面板小鸡自行恢复上线。

昨天晚上,所有使用了 Cloudflare CDN 的哪吒 V1 面板小鸡突然全部掉线,经过排查,事情应该与 Cloudflare 升级 gRPC 配置有关。在问题得到解决前,我们需要关闭 CDN 并使用最简单的方法来使面板恢复正常工作。

Cloudflare 配置修改

首先我们需要关闭域名的 CDN,去 Cloudflare 的 DNS 设置里关闭小黄云即可。

1Panel 配置修改

如果你之前使用的是 Cloudflare 的 15年自签证书,现在关闭 CDN 后需要自行修改为公开 CA 签发的免费证书(1Panel自带申请免费证书功能),以免出现证书问题。

1Panel 配置文件菜单,在最后面加上代码:

underscores_in_headers on;
real_ip_header nz-realip;

upstream dashboard {
    keepalive 512;
    server 127.0.0.1:8008;
}

然后保存并重载。

1Panel 反向代理 —— 源文,将里面的内容全选删除,并替换为以下代码:

location ^~ / {
    proxy_pass http://127.0.0.1:8008;
    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 REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header nz-realip $remote_addr;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_http_version 1.1;
    proxy_read_timeout 1800s;
    proxy_send_timeout 1800s;
    proxy_buffer_size 128k;
    proxy_buffers 4 128k;
    proxy_busy_buffers_size 256k;
    proxy_max_temp_file_size 0;
    add_header X-Cache $upstream_cache_status;
    add_header Cache-Control no-cache;
    proxy_ssl_server_name on;
    add_header Strict-Transport-Security "max-age=31536000";
}

# gRPC 服务
location ^~ /proto.NezhaService/ {
    grpc_set_header Host $host;
    grpc_set_header nz-realip $remote_addr;
    grpc_read_timeout 600s;
    grpc_send_timeout 600s;
    grpc_socket_keepalive on;
    client_max_body_size 10m;
    grpc_buffer_size 4m;
    grpc_pass grpc://dashboard;
}

# WebSocket 服务
location ~* ^/api/v1/ws/(server|terminal|file)(.*)$ {
    proxy_set_header Host $host;
    proxy_set_header nz-realip $remote_addr;
    proxy_set_header Origin https://$host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 1800s;
    proxy_send_timeout 1800s;
    proxy_pass http://127.0.0.1:8008;
}

然后确认保存。

面板后台设置修改

进入面板后台,将真实请求头设置为 nz-realip

至此,我们在已经成功关闭了 CDN 并使用唯一域名直连的情况下,让探针重新得以上线。如果后续 Cloudflare 那边修复了 gRPC 的问题,可以重新正常使用 CDN,我们也可以方便的更改回去。