0 0

Nginx如何设置COOKIE?3

现在有一个需求,如http://www.test.com/aaa_1001.exe 现在需要取出1001并写到用户cookie中。先谢过各位大牛了!

过了好几天了,没人有这方面的经验吗?继续等。。。^_^

问题补充:你好,非常感谢你详细的回复,之前没做过NGINX模块的开发,所以有些不懂的地方,你给我的是直接放到.conf文件里的吗?server块中?
自己也在尝试也COOKIE,也找到了些方法,在cofnig 用
add_header "Set-Cookie" "rec_id=$rec_id;domain=.test1.com;path=/;expires=Mon, 29-Jun-2015 06:11:17 GMT";

但现在有个问题,expires我需要设置成48小时后的时间,请教一下我有什么办法获得我想设置的expires时间吗?


aileqiang 写道
1 分析uri 请求 , 截取request参数 , 取到cookie

2 分析后写入到 response header

ngx_cookie_pass_set_cookie(ngx_str_t * cookie_key_value,
        ngx_str_t * domain,
        ngx_http_request_t *r) {

    ngx_table_elt_t *set_cookie;
    set_cookie = ngx_list_push(&r->headers_out.headers);
    if (set_cookie == NULL) {
            return set_cookie;
    }
    set_cookie->hash = 1;
    ngx_string_ex(set_cookie->key, "Set-Cookie");
    ngx_str_t token = ngx_string(";domain=");
    size_t size = token.len + key_value->len + domain->len;
    u_char * data = ngx_palloc(r->pool, size);
    u_char * startpos = data;
    startpos = ngx_cpymem(startpos, key_value->data, key_value->len);
    startpos = ngx_cpymem(startpos, token.data, token.len);
    memcpy(startpos, domain->data, domain->len);
    set_cookie->value.len = size;
    set_cookie->value.data = data;
    return set_cookie;
}

2011年3月02日 16:35

2个答案 按时间排序 按投票排序

0 0

1 分析uri 请求 , 截取request参数 , 取到cookie

2 分析后写入到 response header

ngx_cookie_pass_set_cookie(ngx_str_t * cookie_key_value,
        ngx_str_t * domain,
        ngx_http_request_t *r) {

    ngx_table_elt_t *set_cookie;
    set_cookie = ngx_list_push(&r->headers_out.headers);
    if (set_cookie == NULL) {
            return set_cookie;
    }
    set_cookie->hash = 1;
    ngx_string_ex(set_cookie->key, "Set-Cookie");
    ngx_str_t token = ngx_string(";domain=");
    size_t size = token.len + key_value->len + domain->len;
    u_char * data = ngx_palloc(r->pool, size);
    u_char * startpos = data;
    startpos = ngx_cpymem(startpos, key_value->data, key_value->len);
    startpos = ngx_cpymem(startpos, token.data, token.len);
    memcpy(startpos, domain->data, domain->len);
    set_cookie->value.len = size;
    set_cookie->value.data = data;
    return set_cookie;
}

2011年3月09日 17:15
0 0

nginx cookie相关的模块只有userid这个模块,
要实现你这个功能要自己写个cookie相关的模块

2011年3月09日 10:03

相关推荐

    nginx cookie有效期讨论小结

    通过OpenResty,我们可以直接在Nginx中处理Cookie,比如使用`resty.cookie`库来设置Cookie的属性,包括有效期。 例如,要设置Cookie的有效期为24小时,可以使用以下代码: ```lua local cookie = resty_cookie:new...

    Nginx 面试题让你全面掌握核心技术.rar

    cookie和session区别? 为什么Nginx不使用多线程?nainx和apache的区别 什么是动态资源、静态资源分离?为什么要做动、静分离? 什么叫CDN服务? Nginx怎么做的动静分离? 限流怎么做的? 漏桶流算法和令牌桶算法知道?Nginx...

    利用nginx解决cookie跨域访问的方法

    其他系统可以共享这个cookie。但是新的四台服务器中并没有申请域名,只有四个ip: 192.168.0.1 单点登录服务器 192.168.0.2 192.168.0.3 192.168.0.4 因为每台服务器有两个项目,都用到单点登录,所以通过修改新的...

    cookie设置httpOnly和secure属性实现及问题

    ### Cookie设置httpOnly和secure属性实现及问题 #### 一、引言 在现代Web开发中,保护用户的隐私和数据安全至关重要。其中一种常见的做法就是通过设置Cookie的`httpOnly`和`secure`属性来增强安全性。这两个属性...

    Nginx-sticky模块(基于cookie的负载均衡实现)及追加安装注意事项

    Nginx-sticky模块(基于cookie的负载均衡实现)及追加安装注意事项

    nginx cookie模块

    `nginx-sticky-module-ng`是一个第三方模块,由Maxim Dounin开发,它增强了Nginx对Cookie处理的能力,支持基于Cookie值进行负载均衡策略的设置。这个模块的主要功能包括: 1. **会话粘滞(Session Stickiness)**:...

    nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

    Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route (a)客户端首次发起访问请求,nginx接收后,发现...

    nginx日志记录post请求的内容和cookies

    此外,memory buffer 的大小默认设置为两个内存页,对于 64 位系统,默认为 16K。 #### 四、示例分析 从给出的部分内容中,可以看到一个通过 curl 发送 POST 请求的示例: ```shell [root@CentOS1614/usr]# curl ...

    教你怎么用Nginx往request的header中添加新字段

    例如,假设我们想在请求头中添加一个名为`X-Api-Version`的字段,其值为`v1`,可以在Nginx的配置文件中这样设置: ```nginx location / { # 其他配置... proxy_set_header X-Api-Version v1; } ``` 这段配置会让...

    Nginx中http请求处理过程

    在解析请求行后,Nginx 会解析请求头,以获取更多的请求信息,如 Cookie、User-Agent 等。 Nginx 中 HTTP 请求处理过程是一个复杂的过程,涉及到多个阶段和机制。理解这些机制对于提高网站性能和可靠性至关重要。

    nginx1.8.1

    3. **会话保持**:通过设置 cookie 或者 IP哈希策略,Nginx 可以保证用户在集群中的会话一致性,避免会话丢失。 **三、Nginx 配置** 1. **基本配置文件**:Nginx 的配置主要在 `nginx.conf` 文件中进行,包括全局...

    php设置cookie,二级域名共享cookie方法,有例子使用很方便

    超实用的cookie设置案例,说明,编辑cookie,删除cookie方法

    Linux下安装与配置基于nginx的tomcat负载均衡和集群(通过cookie分发请求)

    3. **配置cookie-based负载均衡**: 上述配置中,`proxy_set_header Set-Cookie "route=$cookie_route"`会设置一个名为`route`的cookie。如果这个cookie不存在,Nginx将根据默认的负载均衡策略(例如轮询)选择服务器...

    Ubuntu下nginx1.6和sticky1.1安装配置资料 包

    这里,`sticky cookie`指令用于设置基于cookie的会话持久化。`name`参数定义cookie的名称,`expires`定义其有效期,`domain`则指定cookie的作用域。 启动Nginx服务: ```bash sudo /usr/local/nginx/sbin/nginx ``...

    nginx-sticky-module-1.25.zip

    nginx sticky是nginx的module,可以实现基于cookie的负载均衡。 下载后,在编译安装nginx时,用--add-module选项,指到sticky所在目录。类似命令如下: ./configure --prefix=/usr/local/nginx-1.6.0 --add-module=...

    nginx-sticky-module-ng-1.2.6.tar.gz

    在 Nginx 配置文件中,我们需要引入 sticky 模块并设置相应的参数。例如: ```nginx http { upstream backend { server backend1.example.com; server backend2.example.com; sticky cookie sess_name expires=...

    Nginx1.8压缩包以及安装教程

    `,并将session ID设置为cookie值。 2. 使用 Sticky Session(粘滞会话):配置Nginx根据特定cookie或IP地址将请求始终路由到同一后端服务器。 3. 使用第三方库如JSESSIONID同步:在Nginx配置中添加`proxy_set_...

Global site tag (gtag.js) - Google Analytics