dyups灌入开启consistent hash策略的upstream数据时,如果hash key使用了新变量,比如$arg_FengXingYuXin,那么会通过ngx_http_get_variable_index新增一个变量结构体,默认get_handler、set_handler设置为NULL,data、flags设置为0,没有对新变量做进一步的初始化工作。
worker进程处理请求时,转发请求前,会对consistent hash的变量进行运行时渲染,在ngx_http_get_indexed_variable中调用变量arg_FengXingYuXin的get_handler导致段错误,调用栈如下:
这里是否可以参考Nginx reload后的ngx_http_variables_init_vars调用一样,增加对新变量的初始化设置工作。
3条答案
按热度按时间33qvvth11#
感谢反馈,可参考这个PR里面的修复。 #1133
piok6c0g2#
好的 多谢
fruv7luv3#
因为Nginx官方1.13.6中有prefix flag,所以参考ngx_http_variables_init_vars进行了修复,整体代码会简介些。