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 分钟前
AI_Coding:智能代码生成与工程实践
前端
FL162386312911 分钟前
Siemens‑Automation‑License‑Manager & SIMATIC‑Automation‑Tool 下载安装教程
运维·服务器
颜进强14 分钟前
22 · NestJs InjectionScopes 注入作用域:默认单例不是偷懒,是最优——以及何时才该打破
前端·后端·ai编程
liangshanbo121523 分钟前
Web Worker 在 AI 前端应用中有什么具体使用场景?
前端·人工智能
此生决int29 分钟前
Linux系列(04)——基础开发工具(上)软件包管理器、vim、gcc/g++
linux·服务器·vim
Huangjin007_31 分钟前
【Linux 系统篇(二十六)】文件(三): 深入理解 “一切皆文件”、缓冲区
linux·运维·服务器
2401_8685347832 分钟前
2024年11月软考网规
运维·服务器
拖孩39 分钟前
一个全程 AI 写的小程序「厨菜记」,上线 20 天跑通流量主,收入几块钱,开心得不行
前端·后端·微信小程序
谢亮_vipxieliang39 分钟前
Go 并发安全性保障
服务器·网络·golang
颜进强41 分钟前
21 · NestJs AsyncProviders 异步提供者:useFactory 返回 Promise 之后,容器发生了什么
前端·后端·ai编程