作为一个iOS开发、无意间开始慢慢研究nginx。其实这要感谢我的总监黄哥,开始是他带我使用fastdfs搭建图片服务器,慢慢得也对nginx有了一些了解。
说来也奇怪,按说通过F5负载均衡后的2台图片服务器,即使有一台服务器没有图片(返回404),也应该去另一台服务器去获取。更奇怪的是,4g总是去访问那台没有图片的服务器,WiFi没有问题。让我苦恼很久,不能理解。但是再不能理解,解决问题是关键呀。其实那时心中只有一种方案,就是让2台图片服务器的图片同步(同步历史数据),但是生产服务器又不能搞测试,万一失败了咋整(客户分分钟会干死我)。测试环境跟生产不一样。就在回家的路上,突然想到一招,就是在没有图片服务器的nginx,在返回码是404时,重新指向那台有图片的服务器不就OK了,,可是回到家,百度了一下关于对nginx 404 重新指向的处理,都是向一个html,没有我想要的。
实在没有办法,只能从书中找吧,之前买过一本nginx大全,有点厚,读起来特别像大学的课本,但是为了解决问题,忍着点呗。就只看error_page,404类似的章节,说实话,找了2个小时,没找到,有点气馁,看会人民的名义缓缓。就在随意翻书时,找到了我想要的,上代码
location / {
root index.html
error_page 404 @fallback;
}
location @falldback {
proxy_pass http://backend;
}
解释一下
当访问的链接状态码是404时,重新指向URI,进入到 falldback指向的服务器。