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

你可能感兴趣的:(nginx,服务器,前端)