首先如何配置nginx到try_files,如果不存在,请遵循request_uri

QWJ*_*QWJ 2 rewrite nginx page-caching

我们有id分区和子域的页面缓存.比如说ny.site.com/cat/12345或者la.site.com/dog/234,nginx需要的请求

  1. 检查文件是否/cat/ny/1234/5.html存在,返回
  2. 否则,只需使用原始request_uri文件点击应用程序服务器,即可创建缓存文件

我们设法找出子域和id分区部分,但是在try_files部分没有运气.总是得到无限循环错误,如rewrite or internal redirection cycle while internally redirecting to

我们的nginx.conf文件就像

rewrite "/cat/([0-9]{4})([0-9]{1,4})" /system/cache/cat/$subdomain/$1/$2.html break;
rewrite "/cat/([0-9]{1,4})" /system/cache/cat/$subdomain/$1.html break;
try_files $uri $request_uri;
Run Code Online (Sandbox Code Playgroud)

任何提示?谢谢!

更新: 我尝试了以下内容.Nginx在文件系统中寻找$ request_uri(例如/ cat/12345)而不是点击app服务器.有什么想法吗?

try_files $uri @old;
location @old {
    rewrite ^ $request_uri break;
}
Run Code Online (Sandbox Code Playgroud)

小智 5

试试这个

location ^~ ^/cat/([0-9]{4})([0-9]{1,4}) {

    try_files "/cat/ny/$1/$2.html" @app_server;

}
location @app_server{

    # pass this to your app server for processing.

}
Run Code Online (Sandbox Code Playgroud)
  1. 使用^〜,因为这还将包括/ cat/12345 /(结尾斜杠)等边缘情况.
  2. 并确定是否需要$ uri(没有查询字符串)或$ request_uri(包含查询字符串).