如何在nginx模块的请求处理程序中发送302重定向?

时间:2014-06-14 03:41:58

标签: redirect cookies nginx module

我感谢您在以下问题上获得的任何帮助。

我正在尝试使用nginx模块设置cookie映射服务器。

在这种情况下,我收到“http://cms.mydomain.com/pixel.gif”之类的请求,并执行以下操作

  1. 生成mydomain的cookie id
  2. 向浏览器发送302重定向,例如'cms.otherdomain.com/pixel.gif?cookie_id=xxxx'
  3. 然后其他域的cms重定向此请求,我将获得两个cookie ID并记录映射。
  4. 现在我想知道怎样做才能将302重定向发送回浏览器,在nginx请求句柄中,处理 ngx_http_request_t * r

1 个答案:

答案 0 :(得分:0)

您必须将您的网址构建为变量 rs ,然后将其设置为nginx r-> headers_out.location喜欢这样:

    r->headers_out.location = ngx_list_push(&r->headers_out.headers);
    if (r->headers_out.location == NULL) {
        ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
    }
    r->headers_out.location->hash = 1;
    r->headers_out.location->key.len = sizeof("Location") - 1;
    r->headers_out.location->key.data = (u_char *) "Location";
    r->headers_out.location->value.len = r->uri.len + r->args.len + 2; 
    r->headers_out.location->value.data = (u_char *) rs; 
    return NGX_HTTP_MOVED_TEMPORARILY;