本文是对少数派“使用 IBM Cloudant 多端同步 MoonFM 数据“,补充说明,在阅读本文前请详细阅读少数派的这篇文章,在创建IBN Cloudant数据库时,推荐创建在美国东海岸(华盛顿),原因是Heroku免费应用都部署在美国东海岸。
本文不是小白教程,请自行了解域名购买解析、Heroku账户注册认证(认证需外币信用卡)、Cloudflare使用、IBN Cloudant数据库创建、翻(😊)墙工具的搭建使用。
如有疑问,欢迎在本文留言,因作者能力有限,不能保证完全解决,望谅解。
本文是ibm-cloudant-proxy项目的使用说明。
准备
域名已经在NameSilo 购买,DNS解析使用的华为云解析,CDN使用的是Cloudflare,Heroku已经通过信用卡认证,IBN Cloudant已经按照少数派教程创建完毕。
- DNS使用华为云解析是因为华为云解析可以免费使用分地域解析。
- Heroku在验证信用卡后,可以运行更长时间(1000小时),可以免费使用一些插件。
- 因为作者使用Cloudflare很久了,可以使用CNAME 接入,请读者注意,并自行解决遇到的问题。
- 使用Cloudflare可以为Heroku应用免费添加HTTPS。
创建使用
-
IBM Cloudant数据库已经创作完毕,已经可以正常进行域名解析,获取IBM Cloudant访问链接。
- 获取的访问链接格式为https://用户名:密码@访问主机/数据库名
- 例子:https://user:[email protected]/ceshi
-
打开GitHub上的ibm-cloudant-proxy项目,点击“ Deploy to Heroku ”,会跳转到Heroku创建应用界面,详细如下:
- App name:要创建的应用名称这个随意
- CLOUDANT_HOST :IBM Cloudant数据库主机名,示例“xx-bluemix.cloudantnosqldb.appdomain.cloud”。
- 一定要按照说明填写,不要有“https://”开头和“/“结尾。
- 每个人的IBM Cloudant数据库访问链接都不一样,请注意。
- CLOUDANT_URL:IBM Cloudant访问链接,注意要带数据库名,示例“xx-bluemix.cloudantnosqldb.appdomain.cloud/ceshi”。不要带“https://”开头和“/“结尾。
- MF_CLOUDANT :在IBM Cloudant上创建的数据库名称,例子“ceshi”。
这是图片例子。
-
点击“Deploy app”,如果顺利就可以正常部署了。
-
测试是否能正常访问IBM Cloudant数据库。
添加加速域名
因为Heroku远离中国大陆并且免费版无法使用自定义域名加密访问,因此使用Cloudflare加速。
-
Heroku添加自定义域名流程如下:Heroku应用(ceshi)->Settings->Domains->Add domain,域名例子为“moon.itansuo.info”。
-
在Cloudflare DNS管理界面添加CNAME解析,记录名为“moon”,记录类型为“CNAME”,记录内容为“app-ceshis.herokuapp.com”。
- 注意,记录内容为“app-ceshis.herokuapp.com”,不是Heroku上的DNS Target
-
在华为云解析上添加对应的解析,等待域名解析成功,访问链接“https://moon.itansuo.info/ceshi”,测试数据库访问。
访问链接替换
数据库访问正常后,原访问链接“https://user:password@xx-bluemix.cloudantnosqldb.appdomain.cloud/ceshi”,要替换为“https://user:password@moon.itansuo.info/ceshi”。
优化
-
防止Heroku 30分钟无访问自动休眠
- 打Heroku “Resources“标签,找到”Add-ons“,点击“Heroku Scheduler”进行设置。
- 在打开的窗口上点击“Add Job”,输入内容“curl -i https://应用名称.herokuapp.com/”,例子“curl -i https://app-ceshis.herokuapp.com”
-
Papertrail是个免费的日志查看器,请自己使用。
高级
- 速度再次提升,因为Cloudflare没有大陆节点,访问速度有些慢,如果对速度不满意还可以在此提速。
- 使用香港或对大陆友好的VPS反代Heroku(用VPS反代就不需要Cloudflare)。
- 使用Cloudflare自选IP,项目cf2dns。
- 使用 Amazon CloudFront反代Cloudflare(正在使用)。
- DNS分地区解析,默认使用Cloudflare,大陆使用Amazon CloudFront
- 不使用Amazon CloudFront,用户<=>Cloudflare<=>Heroku<=>IBM Cloudant。
- 使用Amazon CloudFront,用户(大陆)<=>Amazon CloudFront<=>Cloudflare<=>Heroku<=>IBM Cloudant。使用教程:【AWS】CloudFront免费CDN详细配置入门
- MF_CLOUDANT参数
- MF_CLOUDANT可以是任意字符,不一定是数据库名称。
参考链接
- 【AWS】CloudFront免费CDN详细配置入门
- 使用 IBM Cloudant 多端同步 MoonFM 数据
- heroku-reverse-proxy
- How to use nginx to proxy to a host requiring authentication?
- Authorization header in Nginx for proxying to basic auth backend does’t work