网站受到大规模攻击
由于本人在nodeseek冲浪,被人盯上,现在被人挂着脚本打,几个月前啥也不懂,买了一个阿里云的小水管,5M带宽,尽管挂着CF,但是总感觉网络访问量大的情况下,还是受到极大影响。
手头正好有一台凤凰城甲骨文,所以把所有主要服务都迁移到甲骨文上。
设置好Cloudflare R2 存储桶,防止甲骨文封号导致数据全丢
有关设置教程已经在这里写过。
其中再次在这里更新一下教训。
1.必须为cloudflare存储桶设置公开域名
设置好公开访问的域名之后,才能享受到cloudflare r2的cdn加速效果
2.设置步骤
设置概述:
- 平台: Discourse (Bitnami 安装)
- 存储桶: Cloudflare R2
- 自定义域名: 已设置用于公开提供文件服务
- 配置: 完全通过 Discourse 站点设置完成(未触及任何环境变量)
详细步骤:
创建 Cloudflare R2 存储桶:
- 登录您的 Cloudflare 账户,并导航至 R2 存储。
- 创建一个新的存储桶用于存放您的 Discourse 上传文件(例如,
forum-uploads
)。- 记录下存储桶 S3 API URL、访问密钥 ID 和秘密访问密钥。
设置 CDN 自定义域名:
- 为了公开提供您的 R2 存储桶内容,在 Cloudflare 中创建一个自定义域名。
- 例如,我使用了
forumfiles.example.in
。- 确保配置 DNS 设置,将其指向 Cloudflare 提供的 CNAME。由于我的域名在 Cloudflare 上,因此它自动完成了配置。
配置 Discourse 站点设置:
s3_bucket: 您的 R2 存储桶名称(例如,
forum-uploads
)。s3_region: 设置为美国东部(弗吉尼亚北部)。或者auto。
s3_endpoint: 使用 Cloudflare 提供的存储桶 S3 API URL(例如,
https://<your-bucket-unique-id>.r2.cloudflarestorage.com
)。s3_access_key_id: 您的 R2 访问密钥 ID。
s3_secret_access_key: 您的 R2 秘密访问密钥。
s3_cdn_url: 您的 CDN 自定义域名(例如,
https://forumfiles.example.in
)。确保已勾选 启用 S3 备份 和 启用 S3 上传。
调整权限和 CORS:
- 将您的 R2 存储桶设置为私有,并配置 CORS 策略:
[ { "AllowedHeaders": ["*"], "AllowedMethods": ["GET", "POST", "PUT", "HEAD"], "AllowedOrigins": ["*"], "ExposeHeaders": ["ETag"], "MaxAgeSeconds": 3000 } ]
- 这确保上传能够正确工作,而不会出现 CORS 问题。
测试设置:
- 通过您的 Discourse 论坛上传一个测试文件或图像,以验证上传是否正常工作。
- 检查文件是否可以通过您的自定义域名访问(例如,
https://forumfiles.example.in/original/1X/...
)。- 检查备份,我已成功执行备份。在 R2 存储桶中进行了交叉检查,并且它也列在站点设置中。
设置cloudflare r2存储桶用于网站备份
记得在管理员设置里,把这个 Backup with uploads取消掉,选这个就会报错,我也不知道为什么。
网站被攻击、服务器中病毒、甲骨文封号怎么办?
去cloudflare存储桶下载备份,按照以下流程恢复备份:
进入 Discourse 容器
使用 SSH 登陆服务器,并进入 Discourse 容器:
cd /var/discourse ./launcher enter app
启用恢复功能
在容器内部运行以下命令以启用恢复功能:
discourse enable_restore
指定恢复来自本地的备份
运行以下命令进行备份恢复:
discourse restore --location local <备份文件名>
参数说明:
--location local
:明确指定从本地目录恢复备份,而不是从 S3 下载。<备份文件名>
:替换为您的备份文件的整个文件名,例如sitename-2025-03-08-054726.tar.gz
。
恢复完成后的步骤
重建(可选)
完成恢复后,如果需要重新同步所有配置信息和插件,可以选择重建 Discourse 实例:
cd /var/discourse ./launcher rebuild app