最新消息:

Nginx反向代理使用的一些坑(续)– Cookie的那些事

技术 admin 6632浏览 0评论

在使用Nginx作为反向代理时候,必然面临对Cookie处理。

典型例子:

a、一些网站要求登录,大部分情况下,用户登录信息都依靠Cookie机制。

b、一些网站使用了CloudFlare 做DDOS防护,而CloudFlare的防护机制之一也是依赖于Cookie机制。

在Nginx中,与Cookie相关的指令包括如下几个:proxy_cookie_domain、proxy_pass_header 、proxy_set_header Cookie $http_cookie

其中proxy_cookie_domain、proxy_pass_header 适用于上游服务器的响应报文(repsone)

proxy_set_header Cookie $http_cookie适用于请求报文(request)

proxy_cookie_domain

proxy_cookie_domain domain replacement;

proxy_cookie_domain的作用是将上游服务器(反向代理服务器的目标服务器)的响应报文。

例如 proxy_cookie_domain .target.com .mydomain.com 指令是 将 Cookie 从Domain=.target.com转为 Domain=.mydomain.com

proxy_pass_header Set-Cookie

proxy_pass_header Set-Cookie 的允许反向代理服务器对浏览器的设置cookie,由于缺省值为on,因此可以不设置。

proxy_set_header Cookie $http_cookie

获取浏览器向反向代理服务器的请求cookie($http_cookie),并设置为反向代理服务器向上游服务器的请求Cookie。

 

下面以反向代理CloudFlare防护的网站为例,说明使用Nginx的Cookie指令使用。

 

使用Nginx反向代理CloudFlare防护网站的典型流程

Nginx典型设置

        proxy_pass https://target.com ;
        proxy_set_header Host "target.com";
        proxy_set_header Referer "https://target.com";
        proxy_set_header Cookie $http_cookie;


        set $domain "";
        if ($host ~* "(.*)(\..*)(\..*)" ) {
                set $domain $2$3;
        }

        proxy_cookie_domain .target.com $domain;
        proxy_pass_header Set-Cookie;

 

 

转载请注明:出家如初,成佛有余 » Nginx反向代理使用的一些坑(续)– Cookie的那些事

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址