Nginx:使用 if in location 时出现错误,如何纠正

Nginx:使用 if in location 时出现错误,如何纠正

我在反向代理模式下使用 nginx。在我的服务器部分,我有此代码来设置静态文件的过期和缓存控制。

     location ~* ^.+\.(css|js|png|gif)$ {
         access_log off;
         expires max;
         add_header Cache-Control public;
         if (!-f $request_filename) {
           proxy_pass  http://localhost:82;
         }

     }

这是很明显造成了问题。有人能帮我修改这个代码以使用try_files或吗rewrite

答案1

至少有两种技术。

错误页面

在引入try_files指令之前,常见的方法是拦截错误代码 404 并使用命名位置处理请求,例如

location ~* \.(css|js|png|gif)$ {
  access_log off;
  expires max;
  add_header Cache-Control public;
  error_page 404 = @upstream;
}

try_files

等效使用try_files如下

location ~* \.(css|js|png|gif)$ {
  access_log off;
  expires max;
  add_header Cache-Control public;
  try_files $uri @upstream;
}

并且两种情况下的命名位置是相同的:

location @upstream {
  proxy_pass http://localhost:82;
}

相关内容