我的问题如下:
- 如何根据针对用户代理的正则表达式设置自定义变量?
- 如何为反向代理请求设置自定义标头?
- 如何使用这些值作为缓存参数?
细节:
我正在根据用户代理解析在我的应用程序中进行初始输出......这基本上分解了请求渲染,因此初始渲染将匹配“xs”,“sm”,“md”,“lg”的引导大小...
我已经制定了正则表达式,以便移动设备将获得“xs”的输出渲染,而普通平板电脑默认将获得“sm”,其他任何人都将获得“md”......在客户端绑定后,它将调整到实际的设备显示,这主要是为了让浏览器获得它们需要的尺寸。
我想要做的是:
- 根据与用户代理的模式匹配设置一些参数,这些参数将通过(反向代理)传递给我的应用程序
X-Initial-Size
- “xs”、“sm”、“md”、“lg”(实际上没有什么可以解析为“lg”X-Is-Human
- 与已知机器人进行匹配以进行检测X-Browser-Class
- “古代”、“现代”、“ie#”(仅限 IE <= 9)
- 使用
X-Initial-Size
和X-Browser-Class
作为vary-by
参数以实现更长久的服务器端输出缓存。
答案1
- 如何根据针对用户代理的正则表达式设置自定义变量?
用一个地图。 例如 :
map $http_user_agent $my_var {
default "default_value";
"~^foo$" "value_1";
"~^bar$" "value_2";
}
- 如何为反向代理请求设置自定义标头?
使用proxy_set_header。 例如 :
proxy_set_header My-Header $my_var;
- 如何使用这些值作为缓存参数?
将这些附加标头定义为代理缓存键:
proxy_cache_key $scheme$request_uri-$http_my_header-$http_my_other_header