加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

嵌套位置中的Nginx反向代理

发布时间:2020-12-13 21:20:18 所属栏目:Nginx 来源:网络整理
导读:我正在使用Nginx作为多个服务器中多个应用程序的反向代理,我正在尝试将公共缓存指令添加到每个应用程序的静态文件中. 我的原始配置是这样的: location /app1{ ... proxy_pass http://127.0.0.1:8081/app1;}location /app2{ ... proxy_pass http://127.0.0.1

我正在使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读