如何configurationnginx从基于cookie的文件提供服务

我正在为具有login用户的dynamic内容的电子商务平台工作,但对于注销的用户,许多页面(如产品页面和类别页面)相对静态。

Rails已configuration为在访问时将特定注销页面的副本保存到磁盘。

我希望nginx在检测到注销的用户时提供这些文件。 当用户login时,我们有一个cookie设置,所以我的希望是我可以检查这个。

我的'理想'nginxconfiguration看起来像(在服务器块):

location /my_location { if (!$cookie_user_logged_in) { try_files /cached_pages/$uri /cached_pages/$uri.html $uri $uri/index.html $uri.html @rails_application; } } 

但是,这是无效的,因为据我所知,根据研究和错误消息,不能把try_files放在if中。

有没有办法用nginx来完成这个任务?

有人告诉我,我应该用另一种工具,如清漆。 我也知道,我可以在Rails中使用动作caching来做事情,并使用片段caching来接近相同的目的。 不过,我想确定这是否是一个可行的select,然后再添加到技术堆栈或进一步投资开发。

如果我没有尝试使用try_files,但下面的代码适用于我。 基本上,如果cookietesting成功的话,它复制特定位置{}内的php-fpm连接。 它允许对admin-ajax.php进行未经授权的访问,并拒绝非法访问/ wp-admin /

进一步下面的configuration文件有一个location ~\.php {...}块通常处理PHP请求。

  location ~ /wp-admin/ { set $adminok 0; if ($http_cookie ~* "admincookie" ) { set $adminok 1; } if ($request_filename ~* "admin-ajax.php" ) { set $adminok 1; } if ($adminok != 1) { return 403; } include fastcgi_params; if (-f $document_root$fastcgi_script_name) { set $doc $document_root$fastcgi_script_name; } if (!-f $document_root$fastcgi_script_name) { set $doc $document_root/wp-admin/index.php ; } fastcgi_param SCRIPT_FILENAME $doc ; fastcgi_pass unix:$server_unix_socket ; fastcgi_cache_bypass 1; }