主要观点:3 年前发布Mess With DNS,因 DNS 实现不谨慎导致诸多问题,后用 PowerDNS 解决,过程中遇到多个挑战及相应解决办法,新网站已上线。
关键信息:
- 最初 DNS 实现存在多种问题,如不允许带下划线的域名、CNAME 记录相关问题等。
- 选择 PowerDNS 作为解决方案,在设置过程中遇到 8 个挑战。
- 挑战 1:通过 dnstap 或自己的 Go 服务器代理拦截 DNS 查询,最初采用 dnstap 但有 1 秒延迟后改为自己的代理。
- 挑战 2:考虑前端直接访问 PowerDNS API 或移出 DNS 逻辑并创建新 API,最终选择后者以便写测试。
- 挑战 3:PowerDNS API 中记录无 ID,通过生成包含名称、类型和内容的假 ID 来解决。
- 挑战 4:处理 PowerDNS API 返回的错误消息,进行初步验证和翻译。
- 挑战 5:将数据库从 Postgres 改为 SQLite,设置相关参数和模式。
- 挑战 6:将 Vue.js 从版本 2 升级到 3,更换表单验证工具。
- 挑战 7:改善前端状态管理,实现全局状态管理存储。
- 挑战 8:将项目拆分为多个阶段,确保网站在升级过程中基本可用。
重要细节: - 前端曾有大量 DNS 逻辑,后移出并创建新 API。
- 关于 API 重复信息,在显示 MX 记录时意识到可在 API 中返回相同信息。
- 对 SQLite 的设置包括设置最大打开连接数、使用单独数据库等。
- 新网站上线后若有问题可在此处反馈。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。