Add new cookie into headers_in
Maxim Dounin
mdounin at mdounin.ru
Tue Jan 25 15:54:44 MSK 2011
Hello!
On Tue, Jan 25, 2011 at 03:34:21AM -0500, michalkraus wrote:
> Thanks,
> I have already read this recommendation in another topic. But
> headers_more_module can modify header_in.headers and I wanted to do it
The fact that some third-party module does this doesn't mean that
it's correct.
> as well. I will just modify headers_out and I will provide the cookie as
> a variable and use proxy_set_header. So I will avoid SIGSEGV.
> One more question about reading value of a variable in my module. I have
> output as variable $ap_filter_gsid from my module and I need to get the
> value in another handler module.
>
> Code in my module seems like:
>
> { ngx_string("ap_filter_sessionid"),
> NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
> ngx_conf_set_str_slot,
> NGX_HTTP_LOC_CONF_OFFSET,
> offsetof(ngx_http_ap_filter_loc_conf_t, sessionid),
> NULL },
>
> There is string "$ap_filter_gsid" in the variable sessionid in
> ngx_http_ap_filter_loc_conf_t struct and not the read value of the
> variable. I need the same for reading $arg_u from query string. I went
> through some module codes and I found out that I should write my
> function instead of ngx_conf_set_str_slot directive. I tried to write
> it, but it has never worked. What should be in this function.
Yes, to allow variable expansion you should take care of it. For
single variable you may use ngx_http_get_variable_index() during
configuration and ngx_http_get_indexed_variable() at runtime.
If you want to allow arbitrary mix of static strings and variables -
you may want to use complex values instead. It's probably easiest
interface, too, as there is generic configuration handler
ngx_http_set_complex_value_slot available. At runtime use
ngx_http_complex_value() to obtain expanded value.
Maxim Dounin
More information about the nginx
mailing list