深入理解nginx的userid模块[上]

2024-04-16 21:44

本文主要是介绍深入理解nginx的userid模块[上],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1. 引言
  • 2. 实现原理
  • 3. userid模块的使用和配置
    • 3.1 userid
    • 3.2 userid_domain
    • 3.3 userid_expire
    • 3.4 userid_flags
    • 3.5 userid_mark
    • 3.6 userid_name
    • 3.7 userid_p3p
    • 3.8 userid_path
    • 3.9 userid_service

深入理解nginx的userid模块[上]
深入理解nginx的userid模块[下]

1. 引言

  nginx 是一个高性能的开源 Web 服务器,它提供了丰富的功能和模块,使得它成为许多网站和应用程序的首选。其中一有个userid的模块,它允许开发人员通过在请求中添加用户标识符(User ID)来实现用户跟踪、行为分析和个性化服务。本文将深入理解 nginx 的 userid 模块,首先简要介绍其实现原理和使用配置方法、应用场景,最后将从源码层面对本模块的实现原理进行深入的剖析。

2. 实现原理

  下面简要介绍一下其实现的原理。它通过在浏览器第一次请求nginx的时候,nginx在响应时在http的响应头中插入一段唯一性的用来标识用户的user id的cookie代码,等到下一次浏览器继续请求nginx的时候,nginx将获得之前植入在cookie中的user id,从而可以在后续根据这个标识的user id,通过日志分析来分析用户的行为等等。

  当然,在做这个数据采集和分析的时候首要前提是不要侵害用户的隐私。

3. userid模块的使用和配置

  首先,ngx_http_userid_module模块是nginx的内置模块,默认是开启的,因此我们不需要特殊处理就已经把这个模块集成到nginx里面了。

  以下是官网给出的一个配置范例:

userid         on;                   # 开启userid 模块
userid_name    uid;                  # 设置将在用户浏览器中植入的cookie的字段名
userid_domain  example.com;          # 设置在哪个域名下进行设置cookie。
userid_path    /;                    # 设置在哪个路径下设置cookie。
userid_expires 365d;                 # cookie的生效时间。
userid_p3p     'policyref="/w3c/p3p.xml", CP="CUR ADM OUR NOR STA NID"';# p3p: Platform for Privacy Preferences# 通过设置正确的 userid_p3p 参数,# 可以提供网站的隐私政策通知,# 增加用户对于隐私保护的信任,# 并确保网站在不同环境中的兼容性。

  以上配置可以放在nginx.conf的http、server或者location中。

  下面对userid的配置指令进行详细说明。

3.1 userid

语  法:	userid on | v1 | log | off;
默认值:	userid off;
上下文:	http, server, location

   开启或者关闭userid 模块功能。

  • on: 开启设置v2版本的cookie, 对于接收到的对应cookie会进行日志记录。
  • v1: 开启设置v1版本的cookie,对于接收到的对应cookie会进行日志记录。
  • log: 关闭设置cookie功能,但是对于接收到的对应cookie会进行日志记录。
  • off: 关闭userid模块功能。

3.2 userid_domain

语  法:	userid_domain name | none;
默认值:	userid_domain none;
上下文:	http, server, location

  一言以蔽之,用来控制生成的 Cookie 的域名作用范围,以适应不同的路径结构和业务需求。一旦设置了以后,浏览器只有在一个指定的域名及其子域名下面的请求的时候才会将cookie发送过来。据个例子,如果设置了 userid_domain test.com,那么在test.com及其子域名dev.test.com下面,cookie都会生效。

3.3 userid_expire

语  法:	userid_expires time | max | off;
默认值:	userid_expires off;
上下文:	http, server, location

  设置cookie的超时时间。

  • time: 超时的时长,单位可以是s,m,d,w,M,y
  • max: 设置超时时间为“31 Dec 2037 23:55:55 GMT”.
  • off: 设置cookie在浏览器关闭之后立即实效。

3.4 userid_flags

语  法:	userid_flags off | flag ...;
默认值:	userid_flags off;
上下文:	http, server, location这个配置指令在1.19.3版本后可用。

  为cookie设置附加的标记。

  • off: 不添加附加标记。
  • secure: 设置本属性可以加强cookie的安全性,浏览器只有在https请求中才会发送该cookie。
  • httponly: 设置本属性避免浏览器的javascript访问这个cookie值。
  • samesite=strict: 浏览器只有在对cookie的源站点进行请求的时候才会发送该cookie。 cookie.
  • samesite=lax: “Lax"和"strict” 是类似的,但是浏览器在用户访问 cookie 的源站点时(即使用户从不同的站点进入),也会发送该 cookie。例如,通过从外部站点跟随链接。
  • samesite=none: “none” 指定了在源站点和跨站请求中都发送 cookie,但仅在安全上下文中(即,如果 samesite=none,则还必须设置 secure 属性)。
  • 如果没有设置 SameSite 属性,则 cookie 被视为 Lax。

  例如,设置 userid_flag samesite=strict;

  那么会产生右边的cookie:Set-Cookie: mykey=myvalue; samesite=strict

3.5 userid_mark

语  法:	userid_mark letter | digit | = | off;
默认值:	userid_mark off;
上下文:	http, server, location

  如果参数不是off,则启用cookie标记机制并设置用作标记的字符。此机制用于在保留客户端标识符的同时添加或更改userid_p3p和/或cookie过期时间。标记可以是英文字母(区分大小写),数字或“ =”字符的任何字母。

  如果标记已设置,则将其与在cookie中传递的客户机标识的base64表示形式中的第一个填充符号进行比较。如果它们不匹配,则Cookie会重新发送指定的标记,到期时间和“P3P”标题。

3.6 userid_name

语  法:	userid_name name;
默认值:	userid_name uid;
上下文:	http, server, location

一言以蔽之,就是设置nginx响应的时候cookie的名字,或者nginx接收到用户请求的时候通过这个设置的cookie的名字来获取用户的ID。

3.7 userid_p3p

语  法:	userid_p3p string | none;
默认值:	userid_p3p none;
上下文:	http, server, location

  userid_p3p 参数允许您指定一个 P3P 策略标记,该标记将与生成的 Cookie 一起发送给客户端。这样,客户端在接收 Cookie 时可以查看该策略标记,并了解有关网站的隐私偏好和数据处理的信息。

  P3P 是一种隐私策略框架,旨在帮助网站向用户传达其隐私政策和数据收集行为。它使用特定的标记语言,允许网站提供有关其隐私偏好的信息,并让用户能够了解和控制其个人数据的使用方式。

  P3P 策略标记使用特定的语法和字段,描述网站的隐私偏好和数据收集实践。例如,它可以包含有关数据收集目的、数据使用方式、数据披露和共享等方面的信息。

  示例配置:

userid_p3p "CP=This is my P3P policy."

  上述示例将 “This is my P3P policy.” 作为 P3P 策略标记,与生成的 Cookie 一起发送给客户端。

  需要注意的是,P3P 标记的具体内容和语法取决于网站的隐私政策和数据处理实践。您可以根据您的网站需求和合规要求,使用适当的 P3P 策略标记。

下面是w3c官网对于p3p的英文解释:

The Platform for Privacy Preferences Project (P3P) enables Websites to express their privacy practices in a standard format that can be retrieved automatically and interpreted easily by user agents. P3P user agents will allow users to be informed of site practices (in both machine- and human-readable formats) and to automate decision-making based on these practices when appropriate. Thus users need not read the privacy policies at every site they visit. 

3.8 userid_path

语  法:	userid_path name;
默认值:	userid_path /;
上下文:	http, server, location

  一言以蔽之,用来控制生成的 Cookie 的路径作用范围,以适应不同的路径结构和业务需求。设置了路径后,该路径一起子路径的请求中cookie都将生效。

3.9 userid_service

语  法:	userid_service number;
默认值:	userid_service IP address of the server;
上下文:	http, server, location

  通过这个指令可以定义每台nginx server自己的标识来确保在多台nginx的集群环境中生成的客户端userid的唯一性。

  如果user id是由多台nginx服务器生成的,那么每台nginx server最好都设置自己的标识来确保生成的客户端user id是唯一的。对于v1版本的cookie,默认值是0;而对于v2版本的cookie,默认值是服务器IP地址的最后四个8位字节的数字。

<未完待续>

这篇关于深入理解nginx的userid模块[上]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/909971

相关文章

Nginx错误拦截转发 error_page的问题解决

《Nginx错误拦截转发error_page的问题解决》Nginx通过配置错误页面和请求处理机制,可以在请求失败时展示自定义错误页面,提升用户体验,下面就来介绍一下Nginx错误拦截转发error_... 目录1. 准备自定义错误页面2. 配置 Nginx 错误页面基础配置示例:3. 关键配置说明4. 生效

Nginx更新SSL证书的实现步骤

《Nginx更新SSL证书的实现步骤》本文主要介绍了Nginx更新SSL证书的实现步骤,包括下载新证书、备份旧证书、配置新证书、验证配置及遇到问题时的解决方法,感兴趣的了解一下... 目录1 下载最新的SSL证书文件2 备份旧的SSL证书文件3 配置新证书4 验证配置5 遇到的http://www.cppc

Nginx之https证书配置实现

《Nginx之https证书配置实现》本文主要介绍了Nginx之https证书配置的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起... 目录背景介绍为什么不能部署在 IIS 或 NAT 设备上?具体实现证书获取nginx配置扩展结果验证

Nginx 访问控制的多种方法

《Nginx访问控制的多种方法》本文系统介绍了Nginx实现Web访问控制的多种方法,包括IP黑白名单、路径/方法/参数控制、HTTP基本认证、防盗链机制、客户端证书校验、限速限流、地理位置控制等基... 目录一、IP 白名单与黑名单1. 允许/拒绝指定IP2. 全局黑名单二、基于路径、方法、参数的访问控制

Nginx服务器部署详细代码实例

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码... 目录Nginx 服务器SSL/TLS 配置动态脚本反向代理总结Nginx 服务器Nginx是一个‌高性

nginx跨域访问配置的几种方法实现

《nginx跨域访问配置的几种方法实现》本文详细介绍了Nginx跨域配置方法,包括基本配置、只允许指定域名、携带Cookie的跨域、动态设置允许的Origin、支持不同路径的跨域控制、静态资源跨域以及... 目录一、基本跨域配置二、只允许指定域名跨域三、完整示例四、配置后重载 nginx五、注意事项六、支持

windows下安装Nginx全过程

《windows下安装Nginx全过程》文章介绍了HTTP和反向代理服务器的概念,包括正向代理和反向代理的区别,并详细描述了如何安装和配置Nginx作为反向代理服务器... 目录概念代理正向代理反向代理安装基本属性nginx.conf查询结构属性使用运行重启停止总结概念是一个高性能的HTTP和反向代理we

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng