if (filename) {
此时 filename=NULL,条件不成立
else if (cf->conf_file->file.fd != NGX_INVALID_FILE) {
type = parse_block;
设置 type,表示当前是在解析一个配置块
for ( ;; ) {
rc = ngx_conf_read_token(cf);
循环读取token
接下来读取的是配置文件 44 行的
root html
以 ;为结束
rc = ngx_conf_handler(cf, rc);
处理 读取的 token
rc = ngx_conf_read_token(cf);
继续读取 token
接下来 读取的 token是 45 行的
index index.html index.htm
以 ;为结束
index指令是用来指定当请求指向一个目录时,服务器应该寻找哪些文件作为默认文件
当用户访问一个目录路径(如
http://example.com/
或http://example.com/blog/
)时,Nginx 会按以下逻辑处理:
检查目录中是否存在
index
指令指定的文件,按配置顺序依次查找(先index.html
,后index.htm
)。返回第一个找到的文件。例如:
若目录中存在
index.html
,则直接返回该文件。若没有
index.html
但存在index.htm
,则返回index.htm
。若所有文件均未找到,则行为取决于其他配置:
rc = ngx_conf_handler(cf, rc);
处理读取的 token
rc = ngx_conf_read_token(cf);
继续读取 token
接下来读入的是 46 行的 }
rc == NGX_CONF_BLOCK_DONE
if (rc == NGX_CONF_BLOCK_DONE) {
if (type != parse_block) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "unexpected \"}\"");
goto failed;
}
goto done;
}
done:
if (filename) {
if (cf->conf_file->buffer->start) {
ngx_free(cf->conf_file->buffer->start);
}
if (ngx_close_file(fd) == NGX_FILE_ERROR) {
ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
ngx_close_file_n " %s failed",
filename->data);
rc = NGX_ERROR;
}
cf->conf_file = prev;
}
if (rc == NGX_ERROR) {
return NGX_CONF_ERROR;
}
return NGX_CONF_OK;
此时 filename=NULL
2个条件都不成立,
返回 NGX_CONF_OK
location 配置块解析完成