youzhengchuan 发表于 2013-01-07 17:55

squid把后端302重写成200响应

假如有一个WebServer,请求URLA的时候,会返回一个302 ,Location为URLB,在squid上想要把URLB重写为URLC,并且让用户看到的是squid直接响应的URLC。

目前我只知道一个方式,调用squid的“url_rewrite_program”,在perl脚本中:
当用户请求URLA的时候,发起一个http请求去后端探测一下Location,并获得URLB,将URLB修改为URLC,然后再输出。

但是这样会有一个问题,即所有url不管后端有没有302,都会去探测一下,而在探测期间,用户只能等着,假如所有请求中只有10%的url会有302,那么这样的方式就太浪费时间了。


squid中还有一个功能叫“location_rewrite_program”,这个功能只有当后端返回302的时候才会触发调度重写程序,不过用这个功能重写之后,URLC仍然是通过302的方式返回给用户的。

有没有既能减少程序调用,又能把302重写为200响应的方法呢。
页: [1]
查看完整版本: squid把后端302重写成200响应