nginx: [emerg] unknown directive...

nginx.conf加上以下配置

location /echo {
    
    
     ndg_echo ;
}

报错
nginx: [emerg] unknown directive.../nginx.conf:...
在这里插入图片描述

网络上有许多的处理办法,但仍未能解决我的问题。


commands中的ngx_string里边的参数是不是和配置文件nginx.conf中的参数一样

static ngx_command_t ngx_http_ndg_echo_cmds[] =
{
    
    
    {
    
    
        ngx_string("ndg_echo"),
        NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,   //CONF文件少,作用域和类型不全
        ngx_http_ndg_echo,
        NGX_HTTP_LOC_CONF_OFFSET,
        offsetof(ngx_http_ndg_echo_loc_conf_t, msg),
        NULL
    },
    ngx_null_command
};

解决方法
修改指令的作用域和类型,即将NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1改为NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LMT_CONF | NGX_CONF_NOARGS|NGX_CONF_TAKE1,加大其作用域和类型。

代码具体缺的是那部分指令作用域和类型仍待探索,但确实解决了nginx: [emerg] unknown directive...的问题。

static ngx_command_t ngx_http_ndg_echo_cmds[] =
{
    
    
    {
    
    
        ngx_string("ndg_echo"),
        NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LMT_CONF | NGX_CONF_NOARGS|NGX_CONF_TAKE1,      
        ngx_http_ndg_echo,
        NGX_HTTP_LOC_CONF_OFFSET,
        offsetof(ngx_http_ndg_echo_loc_conf_t, msg),
        NULL
    },
    ngx_null_command
};

在这里插入图片描述

Guess you like

Origin blog.csdn.net/qq_43271844/article/details/115919284