Nginx使用技巧
nginx有着会不同的模块,可以到nginx的路径下执行./nginx -V来确定拥有那些模块
记录真实ip
add_header来设置请求头的属性,同时可以用remote_addr和X-Forwarded-For来记录请求的真实地址来源以及经过的最后一个跳转地址。
例如
set $XFF $remote_addr;
if ($http_x_forwarded_for != "") {
set $XFF $http_x_forwarded_for;
}
proxy_set_header X-Forwarded-For $XFF;
修改返回值
众所周知,一次请求分为request和response,request,我们可以用proxy_pass和rerewrite来进行跳转,
sub_filter_once off;
这一段表示是否开启sub_filter模块
sub_filter_types *;
这一段表示都有哪些需要被替换,*代表要对整个返回值无论是html还是json进行内容替换。
sub_filter "aa" "bb";
这一段代表真实的需要被替换的内容,比如返回值中出现了http://aa.com,经过nginx的sub_filter之后,会返回http://bb.com,因此sub_filter在面对线上bug不方便重启服务器时,可以配合proxy_pass作为临时解决方案来调整
注意
sub_filter有一个特性,就是比如返回值中有一段代码如下
www.kyzy.cc
www.kyzy.cc/asd
此时,如果配置了
sub_filter "www.kyzy.cc" "www.aa.com";
sub_filter "www.kyzy.cc/asd" "www.bb.com";
则结果会为
www.aa.com
www.aa.com/asd
因为sub_filter是有顺序的,前一行会比后一行先对全文中出现的内容进行替换,而且一旦前一行替换之后,后一行将不再对此内容进行替换,所以,如果出现了有重复内容(例如上面的结果,asd不想变,只更换baidu),可以使用以下
sub_filter "www.kyzy.cc/asd" "www.kyzy.cc/asd";
sub_filter "www.kyzy.cc" "www.aa.com";
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭