我的问题如下:

我的问题如下:

我的问题如下:

  • 如何根据针对用户代理的正则表达式设置自定义变量?
  • 如何为反向代理请求设置自定义标头?
  • 如何使用这些值作为缓存参数?

细节:

我正在根据用户代理解析在我的应用程序中进行初始输出......这基本上分解了请求渲染,因此初始渲染将匹配“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-SizeX-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

相关内容