有什么方法可以减少 Nginx 配置中的冗余位置块代码?

有什么方法可以减少 Nginx 配置中的冗余位置块代码?

是否有可能在 Nginx 中对一组配置完全相同、只是路由不同的块进行 DRY ?例如,location查看我的 Nginx 中的以下代码片段:.conf

location / {
    proxy_pass http://127.0.0.1:3000;
    charset UTF-8;
    proxy_http_version 1.1;
  }
  location ~ /android-chrome-192x192.png {
    proxy_pass http://127.0.0.1:3000/static/brand/favicons/android-chrome-192x192.png;
    expires 365d;
    add_header Pragma public;
    add_header Cache-Control "public";
  }
  location = /android-chrome-512x512.png {
    proxy_pass http://127.0.0.1:3000/static/brand/favicons/android-chrome-512x512.png;
    expires 365d;
    add_header Pragma public;
    add_header Cache-Control "public";
  }
  location ~* \.(?:ico|svg|woff|woff2|ttf|otf|css|js|gif|jpe?g|png)$ {
   proxy_pass http://127.0.0.1:3000;
   expires 365d;
   add_header Pragma public;
   add_header Cache-Control "public";
  }

这里,我至少有两个location块具有相同的值expiresadd_header Pragma, 和add_header Cache-Control。实际上,我有至少 12-15 个这样的块用于各种静态文件。

有什么方法可以减少这里的冗余代码量吗?比如说,用一个块来包含这些值,然后在每个location块中引用这个块?我甚至尝试使用正则表达式来减少块本身的数量location,但这会引发以下错误:

“proxy_pass” 不能在正则表达式给出的位置或命名位置内有 URI 部分

有什么解决方法吗?

答案1

尝试这个:

location ^~ /android-chrome- {
    proxy_pass http://127.0.0.1:3000/static/brand/favicons/android-chrome-;
    expires 365d;
    add_header Pragma public;
    add_header Cache-Control "public";
}

相关内容