一、try_file命令介绍
1、先看一下try_files命令处于nginx处理11个阶段的位置:
typedef enum {
NGX_HTTP_POST_READ_PHASE = 0, //读取请求头
NGX_HTTP_SERVER_REWRITE_PHASE, //执行rewrite
NGX_HTTP_FIND_CONFIG_PHASE, //根据uri替换location
NGX_HTTP_REWRITE_PHASE, //根据替换结果继续执行rewrite
NGX_HTTP_POST_REWRITE_PHASE, //执行rewrite后处理
NGX_HTTP_PREACCESS_PHASE, //认证预处理 请求限制,连接限制
NGX_HTTP_ACCESS_PHASE, //认证处理
NGX_HTTP_POST_ACCESS_PHASE, //认证后处理, 认证不通过, 丢包
***NGX_HTTP_TRY_FILES_PHASE***, //尝试try标签
NGX_HTTP_CONTENT_PHASE, //内容处理
NGX_HTTP_LOG_PHASE //日志处理
} ngx_http_phases;
try_file属于NGX_HTTP_TRY_FILES_PHASE阶段的命令,在post_access阶段之后,content阶段之前。所以它不会与content阶段的命令冲突。
2、try_files的语法规则:
格式1:try_files file … uri; 格式2:try_files file … =code;
可应用的上下文:serv