Nginx基本概念

Posted 攻城狮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx基本概念相关的知识,希望对你有一定的参考价值。

nginx配置文件主要分4部分

  • main(全局设置):  main部分的指令将影响其他所有的设置

  • server(主机设置): server部分的指令主要作用于指定的主机和端口

  • upstream(负载均衡服务器设置): upstream指令主要作用于负载均衡的设置

  • location(指定网页的设置): 主要用于匹配上的网页的设置


location配置规则

匹配符号
  • = 精确匹配

  • ~ 区分大小写的匹配

  • ~* 不区分大小写的匹配

  • ^~ 以某个字符串开头进行匹配

  • / 通用匹配,如果没有其他匹配,任何请求都会匹配上

匹配优先级

location = > location 完整路径 > location ^~ 路径 > location ~ 、~* > location 部分起始路径 > /

Rewrite规则

  • rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用,例如  http://seanlook.com/a/we/index.php?id=1&u=str 只对/a/we/index.php重写。

  • location和rewrite都能实现跳转,主要区别是:location是对一类路径做控制访问或者反向代理,而rewrite是在同一域名内更改获取资源的路径(因为rewrite只能对域名后边的除去传递的参数外的字符串起作用)

  • flag标志位

    1.last: 完成rewrite之后,将新的url重新匹配server里面的location。(ps: 当flag标志位为空时,默认是 last)

    2.break: 完成rewrite之后,网页根目录如果存在指定文件或资源,则直接请求成功,返回200;如果请求内容不存在,则返回404

    5.关于 last和break的区别: 可以把last当做编程语言中的continue,完成rewrite,不结束匹配,需要重新去匹配server中的location,break和编程语言中的break是一样的,rewrite完成之后,直接退出循环(location匹配),进行下一步操作


设置反向代理

upstream www_koumm_com {   
server 127.0.0.1:8000 down;
server 127.0.0.1:7070 backup;
server 192.168.129.22:8000 weight=5;
server 192.168.129.23:8000;
}

server {
listen 80;
server_name www.koumm.com;
access_log logs/www.koumm.access.log main;
location / {
proxy_pass http://www_koumm_com;
}
}

上面的配置文件就实现了初步的负载均衡,所有的请求都会通过proxy_pass转发到后台的服务器,后台的服务器通过upstream建立。upstream结点中的服务器支持4种方式进行请求分配:

  • 1. 轮询(默认)
    每个请求按照时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除

  • 2. weight

  • 指定轮询的权重,weight和访问成正比,用于后端服务器性能不均的情况

  • 3. ip_hash

  • 每个请求按访问ip的hash结果分配,确保每位访客固定访问一个后端服务器,可以解决session的问题

  • 4. fair(第三方)

  • 按后端服务器响应时间来分配请求,响应时间短的优先

每个设备可以有5种不同的状态:
1. down: 当前server不参与负载
2. weight: weight越大,负载的权重就越大
3. max_fails: 允许请求失败的最大次数(默认为1)
4. fail_timeout: max_fail失败之后,暂停的时间
5. backup: 定义备份机器,只有其他机器在忙或者down的时候,才会分发到backup机器


以上是关于Nginx基本概念的主要内容,如果未能解决你的问题,请参考以下文章

了解 Nginx 基本概念

Nginx——Nginx启动报错Job for nginx.service failed because the control process exited with error code(代码片段

Nginx:Nginx基本概念以及用法

Flask模板宏的概念和基本使用

Nginx基本概念

HLS NGINX-RTMP [错误] 1281#0:* 58 hls:强制片段拆分:10.002 秒