• Nginx创建变量值


    目标:在nginx模块中,创建变量,而且赋值 ,能够在配置文件中直接通过变量值获取值。

    1.在readconf阶段,插入变量值:

         保存对应的index值,以后使用。
         value[1]为变量的名字。     

        ngx_http_variable_t *v;         
        ngx_int_t index;                                                                                                                              
        ngx_str_t *value;                                                                                                                             
        value = static_cast<ngx_str_t*>(cf->args->elts);                                                                                              
                                                                  
        v = ngx_http_add_variable(cf, &value[1] , NGX_HTTP_VAR_CHANGEABLE);                                                                         
        if (v == NULL) {                                                                                                                           
            return (char*)NGX_CONF_ERROR;                                                                                              
        }                                                                                                                                            
                                                                                                                                                  
        index = ngx_http_get_variable_index(cf, &value[1]);                                                                                       
        if (index == NGX_ERROR) {                                                                                                              
            return (char*)NGX_CONF_ERROR;                                                                                                
        }                                      
    2.在需要修改的时候,使用以下的代码:
        ngx_http_core_main_conf_t  *cmcf;
        ngx_http_variable_value_t  *v;
        cmcf = (ngx_http_core_main_conf_t*)ngx_http_get_module_main_conf(r, ngx_http_core_module);
        v = ngx_http_get_indexed_variable( r , v_index ) ;

        if( r->variables == NULL )
            printf("variables null\n");

        v->len = ilen ;
        v->valid = 1;
        v->no_cacheable = 0;
        v->not_found = 0;
      
        修改 v->data 为变量的值。
  • 相关阅读:
    iOS9 UITableViewCell separatorInset设置为0分割线还是没有顶到头的问题
    facebook登录(集成FBSDKLoginKit) result的isCancelled总是YES token为nil
    Mac OS X 在Finder新建文本文件
    Xcode8 Could not build Objective-C module 'FBSDKCoreKit'
    Multiple methods named 'status' found with mismatched result, parameter type or attributes
    iOS 10 UserNotifications 框架解析
    WKWebView无法(通过URL schemes)跳转到其他App
    WKWebView不显示提示框(Swift)
    Redis 3.2.1集群搭建
    高吞吐量的分布式发布订阅消息系统Kafka-- 管理工具 Kafka Manager
  • 原文地址:https://www.cnblogs.com/liangxing/p/1959454.html
Copyright © 2020-2023  润新知