Nginx的配置与开发学习(四)

版权声明:转载记得宣传奥~。~ https://blog.csdn.net/c_ym_ww/article/details/88057991

Nginx动静分离

动静分离

  • 通过中间件将动态请求和静态请求分离,从而分离资源,减少不必要的请求消耗,减少请求延时

  • 动静分离的情况下,动态请求挂掉的情况下,也能请求到静态请求

    test.conf的配置属性

    upstream java_api{
        server 127.0.0.1:8080;
    }
    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        access_log  /var/log/nginx/log/host.access.log  main;
        root /opt/app/code;  
    
        location ~ \.jsp$ { #所有jsp的请求
            proxy_pass http://java_api;
            index  index.html index.htm;
        }
    
        location ~ \.(jpg|png|gif)$ {
            expires 1h;
            gzip on;
        }
    
        location /{
            index  index.html index.htm;
        }
        ......
    }
    

Nginx的rewrite规则

  1. URL访问跳转,支持开发设计

    如:页面跳转,兼容性支持,展示效果等

  2. SEO优化

  3. 维护 rewrite ^(.*)$ /pages/weihu.html break;所有请求都跳转到维护界面

    如:后台维护,流量转发等

  4. 安全 实现伪静态

正则表达式

. 匹配除换行符以外的任意字串
? 重复0次或1次
+ 重复1次或更多次
* 最少链接数,哪个机器链接数少就发哪
\d 匹配数字
^ 匹配字符串的开始
$ 匹配字符串的结束
[a-z] 匹配a-z小写字母的任意一个
{n},{n,} 重复n次,重复n次或更多次
\ 转义字符

测试正则表达式:pcretest

rewrite.conf配置

配置语法中的flag字段类型:

last 停止rewrite检测
break 停止rewrite检测
redirect 返回302临时重定向,地址栏会显示跳转后的地址
permanent 返回301永久重定向,地址栏会显示跳转后的地址
server {
    listen 80;
    server_name localhost;

    access_log  /var/log/nginx/log/host.access.log  main;
     
    root /opt/app/code; 
    location ~ ^/break {
        rewrite ^/break /test/ break;//不会继续往下请求,返回404
    }
 
    location ~ ^/last {
         rewrite ^/last /test/ last; //会重新请求test,返回success
    }
    
    location ~ ^/last {
         rewrite ^/last /test/ last;
         #rewrite ^/last /test/ redirect;
    }

    location ~ ^/baidu {
       rewrite ^/baidu http://www.baidu.com/ permanent; #永久重定向:Nginx停止也会重定向网址
         #rewrite ^/baidu http://www.baidu.com/ redirect;
    } 
 
    location /test/ {
       default_type application/json;
       return 200 '{"status":"success"}';
    }
}
  1. Rewrite规则优先级
    • 执行server块的rewrite指令
    • 执行location匹配
    • 执行选定的location中的rewrite
  2. 优雅的Rewrite规则书写
server{
    listen  80;
    server_name nginx.org;
    rewrite ^ http://www.nginx.org$request_uri?;
}

猜你喜欢

转载自blog.csdn.net/c_ym_ww/article/details/88057991
今日推荐