为了检测代理是否真的成功,并且判断是否为所谓的高匿名,我写了在nginx中做了如下的一个配置,添加头部字段,并返回客户端信息。
真正测试代理的时候,发送的是head请求,通过header字段,判断是否真的去请求了,而不是随意给我返回个200(恩,是有这种坑货代理的)
location /proxyTest {
default_type text/plain;
add_header 'Mutex' 'ProxyTest_Xuing';
if ($http_x_forwarded_for != ""){
add_header 'anonymous' 'no';
}
return 200 '$remote_addr - $remote_user [$time_local] $request "$status" $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
}
只要是学过程序的,读下来的话,都知道,我想要的是首先添加一个Mutex
,如果http_x_forwarded_for 不为空的话,再添加一个anonymous
。
离谱的是,添加了下一个,上一个就没有了。hhhh
经过反复试验与资料查找(见参考链接),国外友人和我的情况比较类似,但我没想到是同样的原因。其实就是
add_header仅生效在最近的一个{}当中。
所以。。简单的办法就是if里面再写一遍add_header 'Mutex' 'ProxyTest_Xuing';
嘛,一般人应该不会有这个问题。就写到这里了 hhhh
参考链接: https://www.peterbe.com/plog/be-very-careful-with-your-add_header-in-nginx