怎么看nginx是否打开rewrite
对于nginx的各种指令而言,如果想知道该指令的配置格式和位置,那么比较好的一种方式就是查看nginx的源码,正所谓“源码面前,了无秘密”。rewrite指令在nginx的http的rewrite模块中定义(src/http/ngx_http_rewrite_module.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;}}
nginx rewrite中 redirect permanent有什么区别
nginx的rewrite指令中可以通过设置该条rewrite的flag来对该规则进行说明。一般可以设置的flag有:last,break,redirect,permanent四种。
redirect说明,这条规则是一个临时的跳转,并且此时如果观察http请求的话,http的响应状态码为302.
permanent说明,这条规则是一个永久性的跳转,并且此时,http的响应状态码为301.