基于正则expression式匹配的NGiNX自定义caching参数

我的问题如下:

  • 我如何设置基于正则expression式的自定义variables对useragent?
  • 如何为反向代理请求设置自定义标头?
  • 我如何使用这些值作为caching参数?

细节:

我正在做我的应用程序基于用户代理parsing的初始输出…这基本上打破了请求渲染,所以初始渲染将匹配引导大小的“xs”,“sm”,“md”,“lg” …

我有我的正则expression式制定出来,以便移动设备将得到输出呈现为“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作为变长参数,以实现更长时间的服务器端输出caching。

– 如何基于regexp设置自定义variables对useragent?

使用地图 。 例如 :

 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; 

– 我如何使用这些值作为caching参数?

将这些附加标题定义为代理caching键的一部分 :

 proxy_cache_key $scheme$request_uri-$http_my_header-$http_my_other_header