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路径匹配规则有一条是按照文件顺序

相关推荐
淡海水1 小时前
06-04-YooAsset源码-Unity加密解密服务
前端·unity·性能优化·c#·游戏引擎·yooasset
trigger3332 小时前
desk-health-web-community-post
前端
倒流时光三十年2 小时前
Logback 系列(7):常用 Appender(控制台 / 文件 / 滚动文件)
java·前端·logback
Csvn2 小时前
页面「穿越」之谜:React 中因 key 值不正确导致的渲染 Bug 排查实战
前端
浅水壁虎2 小时前
前端技术_TypeScript(第一章)
前端
liulilittle3 小时前
论无知:分布式
服务器·网络·分布式·并发·通信·竞态
Web极客码3 小时前
MariaDB 将成为 cPanel 中的默认数据库
服务器·mariadb·cpanel
川石课堂软件测试3 小时前
安全测试|服务器安全加固方法
服务器·功能测试·测试工具·jmeter·mysql·web安全·单元测试
2401_858286113 小时前
OS79.【Linux】POSIX信号量
linux·运维·服务器
laboratory agent开发3 小时前
企业AI Agent落地前,先回答四个工程问题
java·前端·人工智能