我正在使用Nginx作为多个服务器中多个应用程序的反向代理,我正在尝试将公共缓存指令添加到每个应用程序的静态文件中.
我的原始配置是这样的:
location /app1{
...
proxy_pass http://127.0.0.1:8081/app1;
}
location /app2{
...
proxy_pass http://127.0.0.1:8082/app2;
}
...
要添加静态文件指令,我可以为每个位置添加一个嵌套位置,如下所示:
location /app1{
...
proxy_pass http://127.0.0.1:8081/app1;
location ~* \.(css|js|ico|gif|jpg|jpeg|png)${
expires 1d;
...
proxy_pass http://127.0.0.1:8081;
}
}
location /app2{
...
proxy_pass http://127.0.0.1:8082/app2;
location ~* \.(css|js|ico|gif|jpg|jpeg|png)${
expires 1d;
...
proxy_pass http://127.0.0.1:8082;
}
}
由于我有30个应用程序,我正在尝试将代码简化为:
location /app1{
...
proxy_pass http://127.0.0.1:8081/app1;
include static_file_config.conf;
}
location /app2{
...
proxy_pass http://127.0.0.1:8081/app2;
include static_file_config.conf;
}
有没有办法可以简化代码,所以我不会以30个相同的位置结束静态文件?
请注意,每个应用程序都提供自己的静态文件.
最佳答案
也许您可以使用正则表达式将特定URI与上游应用程序匹配,而不是拥有多个位置:
location ~ /(app)(\d+) {
proxy_pass http://127.0.0.1:808$2/$1$2;
include static_file_config.conf;
}
你可以在这里看到它是如何工作的:https://regex101.com/r/sM3eS9/1