2015年12月

vagrant使用中遇到machine already exists,delete the machine with the existing name, and try again

vagrant用了很久了,今天第一次遇到问题,可能是因为Mac合盖导致了虚拟机假死,然后再次vagrant up时出了问题:

QQ20151224-0.png

字面意思是 导入box失败 因为已经存在。。。为啥要重新导入原始的box呢?

我手工打开 virtual box 虚拟机让你后手工关闭了 homestead
QQ20151224-1.png

然后重新执行 vagrant up问题依旧存在,而且还在 virtual box 里产生了新的box。

然后谷歌找到了方法,这里记录一下:

执行 vboxmanage list vms,得到虚拟机的id:
QQ20151224-2.png

把id复制出来,也就是大括号里面那一串,然后写到~/.vagrant/machines/default/virtualbox/id里面(谷歌里面是这么说的)
QQ20151224-3.png

再执行 vagrant up, 还是出错

我自己再尝试修改./.vagrant/machines/default/virtualbox/id(当前目录里面的,发现里面是另外一串id,改为上面正确的那一串)
QQ20151224-4.png

好使了,解决 mark 一记!

记一次由空格导致的502

现象:
今天访问 https://login.demo.com/ajax-user.html 的时候出现了 502 Bad Gateway,而https://login.demo.com/*.html 其他页面都是正常的,但是最近又没有上线代码,而且这部分以前测试验证过的,线上也一直在用。所以怀疑是运维在 nginx 上做了什么“手脚”,找运维询问,运维说昨天只变更了 F5 -> LVS + HAProxy,不会影响功能。讲道理的确应该是这样的:1、其他页面的功能正确 2、变更的部分都在TCP层面上,应该不会影响业务。

but,之前又的确没有问题。

定位问题:
1、首先绕过 LVS 和 HAProxy, curl 指定 ip:port 来直连 nginx,结果:正常
2、排查 HAProxy 配置,结果:正常
3、直连 HAProxy 来访问,结果: 异常

怀疑是 nginx返回的内容 导致 HAProxy 不能解析。

对比正常和异常的内容

发现异常的内容的头信息里:
'Access-Control-Allow-Origin : http://demo.com'
分号的前面多了一个空格 去掉之后应该是这样
'Access-Control-Allow-Origin: http://demo.com'

验证:
curl -x ip:post -H 'key : value' 'url' 到 HAProxy , 结果:异常

好了,到此就找到问题是这个很小的空格引起的,之前F5没有这么严格,而HAProxy比较严格,就爆出异常。

所以使用

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

类似这样的语句时,要注意 ":" 前面不能有空格,免得踩坑。