使用nginx作多域名混跑的proxy_cache时遇到一问题:当一个非加速server_name的请求到达时,nginx不会像squid那样返回一个ERR_DNS_FAIL,反而假装很正常的返回一个页面:
复制代码代码如下:
http {
server { server_name www.aaa.com; proxy_pass http://1.1.1.1; } server { server_name www.bbb.com; proxy_pass http://2.2.2.2; } }
访问www.ccc.com的时候,nginx毫不犹豫的把www.aaa.com的页面内容返回给了client。在日志里记录:
如果把aaa和bbb的server{}顺序倒换,那ccc的回源地址就变成了2.2.2.2。
解决方法:在最上头,也定义一个自己的server,就可以了:
复制代码代码如下:
http {
server { root /cache; rewrite ^(.*) /error.htm permanent; } server { …… } }
至于这个error.htm,有没有都一样,反正有就是301,没有就是404。 |