Nginx高级配置之Rewrite配置

服务器组

nginx支持设置一组服务器作为后端服务器,反向代理、负载均衡经常会涉及。
- upstream : 设置服务器组的指令,类似于server的块upstream name { .... }


  • server: 设置组内服务器,server address [parameters]

  • address ip:port 域名等
  • weight=numbers 权重,默认为1,加权轮询策略
  • max_fails=numbers 设置一个请求失败的次数,一定时间内超过次数认为服务无效
  • fail_timeout=time 在此时间内,认为服务器无效,默认10s
  • backup 将某台服务器标注为备用服务器,只有当正常服务器失败或繁忙时,才会请求
  • down 将某台服务器标记为永久无效状态
  • ip_hash 用于实现会话保持功能,请某刻客户端的请求定向到组内的一台服务器上,改服务器down掉以后,交由下个服务器处理 ip_hash;
  • keepalive:控制网络连接保持功能 keepalive timeout;
  • least_conn:最好连接负载均衡算法 least_conn;
upstream all_server {
    ip_hash;
    server 10.8.177.23:2880;
    server 10.8.177.24:2880;
    server 10.8.177.25:2880 backup;
}

Rewrite功能

重写,即重定向。此功能也对反向代理提供了支持。常用的场景:域名跳转 域名镜像 独立域名 目录自动加/ 目录合并 防盗链

常用指令:

  • if可在server location块中配置 if (condition) {...}
    • 如果condition为变量名时,若为空或者以’0’开头的任意字符串都为false
    • 如果condition为= != 时,比较字符串是否相等
    • 如果condition可为正则表达式,~大小写敏感 ~*大小写不敏感,可对正则提取,使用$1~9取值
    • -f是否文件,-d 是否目录,-e文件/目录是否存在,-x请求文件是否可执行
    • break 中断当前相同作用域中的配置位于此指令之前的生效之后的不生效。
    • return 可在server location if块中使用
    • return [text] 返回给客户端的响应体的内容,支持变量的使用
    • return URL 返回给客户端的URL
    • return code URL 返回给客户端的0-999的编码以及URL。444编码可以强制关闭服务器与客户端的连接
    • rewrite 通过使用正则表达式来改变URI,可以同时存在多个rewrite regex replacement [flag];
    • regex 用于匹配URI的正则表达式
    • replacement 匹配成功后用于替换URI中被截取内容的字符串。如果该串是由http:// 或者https://开头的,则将其直接返回。rewrite alleyz.com http://example.com$request_uri?permanent
    • flag 用来设置rewrite对uri的处理行为。last将重写的uri重新在server块中执行。break此处处理的URI不会再转向其他location块了。redirect重新以302状态码将uri返回给客户端,http https开头的replacement不适用。 permanent,以301状态吗返回URI给客户端。
    • rewrite_log on |off是否开启rewrite日志,若开启以notice输出到error_log中

常用全局变量

变量 说明
$args 请求参数,同$query_string
$document_uri 请求的路径,同$uri
$request_uri 请求的路径以及请求的参数

例子

  • 域名跳转

    server {
        listen       3022;
        server_name  10.8.177.21;
        gzip on;
        gzip_vary on;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        rewrite ^/ http://www.baidu.com;

    }

猜你喜欢

转载自blog.csdn.net/u010209217/article/details/77885540
今日推荐