发布网友 发布时间:2022-04-20 15:02
共1个回答
热心网友 时间:2022-04-11 08:43
对于nginx的各种指令而言,如果想知道该指令的配置格式和位置,那么比较好的一种方式就是查看nginx的源码,正所谓“源码面前,了无秘密”。rewrite指令在nginx的http的rewrite模块中定义(src/http/ngx_http_rewrite_mole.c)。查看一下该模块的指令数组可以看到如下的代码:staticngx_command_tngx_http_rewrite_commands[]={{ngx_string("rewrite"),NGX_HTTP_SRV_CONF|NGX_HTTP_SIF_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE23,ngx_http_rewrite,NGX_HTTP_LOC_CONF_OFFSET,0,NULL},//}从源码可以看出,rewrite可以出现的地方有4个:NGX_HTTP_SRV_CONF,NGX_HTTP_SIF_CONF,NGX_HTTP_LOC_CONF,NGX_HTTP_LIF_CONF。分别对应着:NGX_HTTP_SRV_CONF:配置文件中的server域中的任何地方;NGX_HTTP_SIF_CONF:配置文件中server域中的if配置中;NGX_HTTP_LOC_CONF:配置文件中的location域中的任何地方;NGX_HTTP_LIF_CONF:配置文件中的location域中的if配置中;举例如下://server{//rewrite"^/+$"/index.phpbreak;if($uri~*"^/+abc"){rewrite"^/+abc"/abc/index.phpbreak;}location/xy{rewrite"^/+xy$"/xy/index.phpbreak;}}