set_from_accept_language
指令 'set_from_accept_language' 根据客户端的 'Accept-Language' 报头设置变量,并从预定义列表中优先选择最匹配的区域设置。
NGINX Accept-Language module
·
httpserverlocation
语法set_from_accept_language variable_name locale1 locale2 ...;
默认值none
上下文http, server, location
参数1+
说明
'set_from_accept_language' 指令是 NGINX Accept-Language 模块的一项功能,允许您从客户端的 HTTP 'Accept-Language' 报头派生出一个区域设置变量。该指令要求您指定一个变量(应以 '$' 符号开头)以及一个或多个受支持的区域设置。当请求到达时,NGINX 会检查 'Accept-Language' 报头,该报头包含以逗号分隔的客户端偏好语言列表。它将这些语言与指定的区域设置进行匹配。如果找到匹配,则将变量设置为该区域设置;否则,默认为指定列表中的第一个区域设置。
该指令可在多种上下文中运行——http、server 和 location——从而在根据用户偏好应用区域检测时提供灵活性。变量之后指定的区域设置必须按正确的顺序排列,因为它们代表选择的优先级序列。该指令还考虑到 'Accept-Language' 报头可能基于质量值(用 'q' 表示)进行排序的情况,尽管这并不保证且在不同浏览器间可能有所不同。如果没有找到合适的匹配,模块会无缝回退到列表中的第一个区域设置,确保每个请求都有定义的语言输出。
配置示例
set_from_accept_language $lang en ja pl;
⚠
确保变量名以 '$' 开头;否则会触发警告。
⚠
如果依赖 'Accept-Language' 请求头的顺序,请小心;不同浏览器之间的一致性可能会有所不同。
⚠
区域设置名称比较不区分大小写;请确保你的区域设置标识符格式正确。