nginx 静态动态文件分离部署

第一种配置

在server模块中配置

if ( $http_user_agent ~* "MSIE [6-9].[0-9]") {

rewrite /* /index_ie.html break;

}

代码先判断请求的user_agent中是否含有MSIE ie浏览器标识。如果有的话,使用rewirte来找到目标静态资源。

资源地址是:/usr/local/nginx/html/index_ie.html

所以必须配置root 根目录为usr开始的一个目录。否则会默认为nginx的一个目录(我的环境是:/etc/nginx/html/),再拼接上页面地址,导致地址不正确,触发404文件找不到异常。

复制代码
server {
    listen 80;
    server_name adass.messs.com;
    root /usr/local/nginx/html;
    if ( $http_user_agent ~* "MSIE [6-9].[0-9]") {
            rewrite /* /index_ie.html break;
        }


    location /adao{
        alias /usr/local/nginx/html/adauto;
        index index.html index.html;
        try_files $uri $uri/ /adao/index.html /adao/index_ie.html;
                    
        }

}

第二种配置:

文件路径中有其他路径规则,使用break 还会去再次匹配吗?答案不会去匹配。

修改后的nginx如下,注意文件位置要移动到/usr/local/nginx/html/adao/index_ie.html。请求中并不会再次去匹配adao路径规则的。因为使用了break ,不会再继续匹配规则。

复制代码
server {
    listen 80;
    server_name adass.messs.com;
    root /usr/local/nginx/html/adao;
    if ( $http_user_agent ~* "MSIE [6-9].[0-9]") {
            rewrite /* /index_ie.html break;
        }


    location /adao{
        alias /usr/local/nginx/html/adauto;
        index index.html index.html;
        try_files $uri $uri/ /adao/index.html /adao/index_ie.html;
                    
        }

}

实验下来还是能请求到index_ie.html文件

第三种配置:

map的使用

复制代码
 map $http_user_agent $outdated {
        default                                 1;
        "~MSIE [1-10]\."                        0;
        "~Trident/[5-7]\."                      0;
    }

map放置于http模块。不可放置其他模块。

完整iginx文件配置方式为:(http模块可以省略)

复制代码
upstream mockserver {
    # server 127.0.0.1:5002;
    server localhost:5002;
}

 map $http_user_agent $outdated {
        default                                 1;
        "~MSIE [1-10]\."                        0;
        "~Trident/[5-7]\."                      0;
    }

server {
    listen 80;
    server_name adauto.mediav.com;

    location /index_ie{
        alias /usr/local/nginx/html/adao;
        index index_ie.html;
    }

    location /adao{
        alias /usr/local/nginx/html/adao;
        index index.html index.html;
        try_files $uri $uri/ /adao/index.html;
       
         if ( $outdated = 0) {
            rewrite /* /index_ie redirect;
}
    }

  
}

rewrite 替换后一个路径/index_ie,并不是文件的地址。这个路径请求后会继续匹配index_ie,找到文件地址index_ie.html

注意:nginx路径匹配规则有一条是按照文件顺序

相关推荐
天下无贼!8 分钟前
【Python】2026版——FastAPI 框架快速搭建后端服务
开发语言·前端·后端·python·aigc·fastapi
HalvmånEver18 分钟前
Linux:socket套接字编程的基础概念
linux·运维·服务器
GISer_Jing43 分钟前
两种AI交互方式深度解析——浏览器书签&插件
前端·人工智能·ai·prompt
二进制person1 小时前
JavaEE初阶 --网络初识
运维·服务器·网络
前端布鲁伊1 小时前
零代码上线一个图片处理网站,我是如何使唤AI干活的?
前端·ai编程
庄小焱1 小时前
React——React基础语法(2)
前端·javascript·react.js
终端鹿1 小时前
Vue3 核心 API 深度解析:ref / reactive / computed / watch
前端·javascript·vue.js
console.log('npc')1 小时前
partial在react接口定义中是什么意思
前端·javascript·typescript
SuperEugene1 小时前
前端 utils 工具函数规范:拆分 / 命名 / 复用全指南,避开全局污染等高频坑|编码语法规范篇
开发语言·前端·javascript