Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

迁服风波

  前段时间这个博客由于服务器提供商的问题挂了,我连夜迁了服务器但又遇到了备案等各种问题。后来绕了一大圈终于恢复了访问,但在很长一段时间内依然处于间歇性瘫痪状态,但至少能用。在解决这些问题之后我也摸出了一些门路,这让我有了一些新的想法。
  原本这个博客搭在一台香港服务器上,是一个不知名的服务器提供商。某天早晨我起床发现自己的域名居然 ping 不通了,于是我开始联系提供商。然而该死的提供商却像蒸发掉一样完全联系不到,于是就这么莫名其妙地挂了一天。到了晚上,百般无奈之下我就做了个艰难的决定,迁到阿里云。
  还好我的数据库是每天备份的,所以不会有什么丢失,只要重新部署就肯定能恢复。于是在阿里云上搞了个国内 VPS,开始部署环境。这是个艰巨的任务,因为这个博客的服务器配置是 2012 年搞的,当时使用的是 Win2k3 + Apache + PHP 5.3。然而我已经很久没用 Windows 也不想折腾 Windows 了,于是在阿里云上选择了 Ubuntu 的服务器,硬着头皮连夜把整个项目迁移到了 Ubuntu + Nginx + PHP 5.5。光是把 .htaccess 改写成 nginx.conf 就花了好长时间,还纠结了各种从 PHP 环境和版本的兼容问题。
  我原本想着想把网站跑起来,然后再去备案。然而在我搭好后发现没备案根本跑步起来(阿里云比较严格么)。访问 80 端口出现一个提示备案的页面,也就是说某个神奇的地方劫持了 80 端口?于是我立即开了个 8080 端口,把原域名解析到国外的一个转发链接上,这个链接跳转到新域名的 8080 端口,然后访问就恢复了(这时天也亮了)。
  虽然访问已经恢复,但是用了另一个域名,而且后面还有奇怪的端口号,看着就觉得难受。恢复访问后不仅是 8080 端口可以跑,我还有一个对外的 8000 端口提供的 ws 服务也可以正常工作。于是我就试了试 443 端口,发现也可以打通!我抱着激动的心情找了个免费的 ssl 证书,并把跳转改成了 https 的版本,成功去掉了后面的端口号。
  到这里,大部分问题都解决了,这个版本也跑了大半个月。但由于我随便找的那个破证书老是出问题,间歇性地瘫痪问题依然存在。另一方面备案需要拍照,拍照又要跑好远。而且我人长得丑不喜欢拍照,于是又把服务器丢回了香港,只不过这次依然使用了阿里云的香港 VPS。
  这场风波让我了解到一个重要信息 —— 备案问题只影响 80 端口,在国内搭一个 https 站点是不需要备案的。但我不建议这么做,因为政策就像女人心,你永远猜不到下一秒会不会封掉 443 端口。但是有一点可以保证的是,其它莫名其妙的端口是不会随随便便被封的。如果只是一个 API 服务器,完全可以丢在国内,通过一些奇奇怪怪的端口来访问。或者直接通过 IP 访问,因为备案备的是域名,而不是服务器,IP 总是可以访问,除非做了什么奇奇怪怪的事被封了 IP。
  如果一个 Web 项目是前后端分离的,那么把 API 服务器和数据库部署在国内,只把前端部分丢到国外的一个静态服务器或 CDN 甚至 github.io 上,然后所有 API 直接通过 IP 或一个非 80 端口的域名跨域调用国内资源。这样即使是国外服务器,也许就首次访问会慢一点,之后的数据交互速度就完全没问题了。
  以上方案非常好,只是这个博客目前依然考虑 SEO,所以还有很多 PHP 程序存在。等到解决后端渲染问题之后肯定会这么做的!最后其实还有一个没解决的问题,那就是 GFW。无论是我现在的香港服务器还是 github.io,如果 GFW 严的话还是会「连接被重置」。难道备案才是出路么?反正我真的不想去拍照!
网名:
52.91.185.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^