nginx rewrite flag Nginx 请求处理流程 + nginx.conf配置文件

0. 基本用法是 rewrite patten replace flag

1. break可以理解为switch中的break,而last可以理解为continue,一个是跳出server{}的匹配规则,一个还将继续匹配之后的规则。

无论使用last还是break,浏览器上面的地址栏不能被改变,而另外两个临时重定向302--redirect、永久重定向--permanent将改变浏览器上地址栏。

2. 官方文档的说明: http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

An optional flag parameter can be one of:
last
stops processing the current set of ngx_http_rewrite_module directives and starts a search for a new location matching the changed URI;
break stops processing the current set of ngx_http_rewrite_module directives as with the break directive;

redirect
returns a temporary redirect with the
302 code; used if a replacement string does not start with “http://”, “https://”, or “$scheme”;

permanent returns a permanent redirect with the 301 code.

 参考:https://cloud.tencent.com/developer/news/65131

 

3. Nginx 配置的模块结构图

 

这节课我们介绍了物理机与 Nginx 相关配置的优化,优化的方向无非是对内存、CPU、IO(磁盘 IO 和网络 IO)的优化。
《11|高性能优化:物理机极致优化》

最后再说几个与下游 Web 服务相关的超时配置。
它们分别是 proxy_connect_timeout、proxy_send_timeout、proxy_read_timeout,即连接建立超时时间、发送请求超时时间、读取响应超时时间。
如果不合理设置这些超时时间,就会因为各种网络状况导致 Nginx 与 Web 服务之间数据传输受阻,客户端将会一直等待,体验极差。
所以我们需要根据接口的正常响应时间,设置一个合理的超时时间,等待超过超时配置,再将返回提示给到用户。
具体的设置我也放到汇总配置里了。
#工作进程:根据CPU核数以及机器实际部署项目来定,建议小于等于实际可使用CPU核数
worker_processes 2;

#绑核:MacOS不支持。
#worker_cpu_affinity   01 10;

#工作进程可打开的最大文件描述符数量,建议65535
worker_rlimit_nofile 65535;

#日志:路径与打印级别
error_log logs/error.log error;



events {
    #指定处理连接的方法,可以不设置,默认会根据平台选最高效的方法,比如Linux是epoll
    #use epoll;
    #一个工作进程的最大连接数:默认512,建议小于等于worker_rlimit_nofile
    worker_connections 65535;
    #工作进程接受请求互斥,默认值off,如果流量较低,可以设置为on
    #accept_mutex off;
    #accept_mutex_delay 50ms;
}

http {
        #关闭非延时设置
        tcp_nodelay  off;
        #优化文件传输效率
        sendfile     on;
        #降低网络堵塞
        tcp_nopush   on;

        #与客户端使用短连接
        keepalive_timeout  0;
        #与下游服务使用长连接,指定HTTP协议版本,并清除header中的Connection,默认是close
        proxy_http_version 1.1;
        proxy_set_header Connection "";

        #将客户端IP放在header里传给下游,不然下游获取不到客户端真实IP
        proxy_set_header X-Real-IP $remote_addr;

        #与下游服务的连接建立超时时间
        proxy_connect_timeout 500ms;
        #向下游服务发送数据超时时间
        proxy_send_timeout 500ms;
        #从下游服务拿到响应结果的超时时间(可以简单理解成Nginx多长时间内,拿不到响应结果,就算超时),
        #这个根据每个接口的响应性能不同,可以在每个location单独设置
        proxy_read_timeout 3000ms;
        
        #开启响应结果的压缩
        gzip on;
        #压缩的最小长度,小于该配置的不压缩
        gzip_min_length  1k;
        #执行压缩的缓存区数量以及大小,可以使用默认配置,根据平台自动变化
        #gzip_buffers     4 8k;
        #执行压缩的HTTP请求的最低协议版本,可以不设置,默认就是1.1
        #gzip_http_version 1.1; 
        #哪些响应类型,会执行压缩,如果静态资源放到CDN了,那这里只要配置文本和html即可
        gzip_types      text/plain;

         
        #acccess_log的日志格式
        log_format  access  '$remote_addr - $remote_user [$time_local] "$request" $status '
            '"$upstream_addr" "$upstream_status" "$upstream_response_time" userId:"$user_id"';

        #加载lua文件
        lua_package_path "/Users/~/Documents/seckillproject/demo-nginx/lua/?.lua;;";
        #导入其他文件
        include /Users/~/Documents/seckillproject/demo-nginx/domain/domain.com;
        include /Users/~/Documents/seckillproject/demo-nginx/domain/internal.com;
        include /Users/~/Documents/seckillproject/demo-nginx/config/upstream.conf;
        include /Users/~/Documents/seckillproject/demo-nginx/config/common.conf;
}

 

posted @ 2018-11-10 16:23  littlevigra  阅读(296)  评论(1编辑  收藏  举报