Nginx学习笔记(入门篇)

Nginx 学习笔记

1. nginx 下载

下载地址:download1download2

有三种选择 Mainline version(主线版本),Stable version(稳定版本),Legacy versions(旧版);

2.初学者指南(安装)

nginx的初学者指南

nginx下载后安装,在Linux机器上,解压tar.gz包,解压命令为:tar -zxvf xxxx.tar.gz [-C 解压路径],【】中的可选,不写表示解压到当前目录中;进入目录后,执行**./configuration --prefix=/usr/local/nginx** 命令,具体可以参考从源代码构建Nginx,prefix后的目录可以自定义,执行后有错,百度解决各种Linux系统的错误,进入conf目录,可以自定义修改其中的内容,具体配置后面介绍;

3.nginx配置篇

nginx文档

当前操作的所在目录:/usr/local/nginx

启动nginx命令:sbin/nginx

nginx -s <信号>

其中信号可以是以下之一:

  • quit 正常关机
  • reload 重新加载配置文件
  • reopen 重新打开日志文件
  • stop 立即关闭(快速关闭)

kill实用程序还可用于直接向主进程发送信号。默认情况下,主进程的进程ID被写入到位于**/ usr / local / nginx / logs/ var / run目录中的nginx.pid**文件。

有关高级信号(现场表演的二进制升级,比如)的更多信息,请参阅控制的Nginxnginx.org

将HTTP流量代理到一组服务器:

​ 使用server指令配置组中的服务器(不要与server定义在NGINX上运行的虚拟服务器的块混淆)。例如,以下配置定义了一个名为后端的组,并且由三个服务器配置组成(可以在三个以上的实际服务器中解析):

http {
	upstream backend {
		server backend1.example.com weight=5;
		server backend2.example.com;
		server 192.0.0.1 backup;
	}
}

​ 到请求传递到服务组,该组的名称在指定proxy_pass指令(或fastcgi_passmemcached_passscgi_pass,或uwsgi_pass指示这些协议)。在接下来的例子中,上NGINX运行的虚拟服务器传递给所有请求后端上游组在上一个示例中定义:

server {
	location / {
		proxy_pass	http://backend;
	}
}

​ 以下示例结合了以上两个片段,并显示了如何将HTTP请求代理到后端服务器组。该组由三台服务器组成,其中两台运行同一应用程序的实例,而第三台是备份服务器。因为没有在upstream块中指定负载平衡算法,所以NGINX使用默认算法Round Robin:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server 192.0.0.1 backup;
    }
    
    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

选择负载均衡方法:NGINX开源支持四种负载均衡方法,而NGINX Plus又增加了两种方法:

  1. Round Robin 请求在服务器之间平均分配,同时考虑了服务器权重。默认情况下使用此方法(没有启用它的指令):
upstream backend {
   # no load balancing method is specified for Round Robin
   server backend1.example.com;
   server backend2.example.com;
}
  1. Least Connections 将请求发送到具有最少活动连接数的服务器,同时还要考虑服务器权重:
upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
}
  1. IP Hash(IP哈希) 从客户端IP地址确定向其发送请求的服务器。在这种情况下,可以使用IPV4地址的前三个八位字节或整个IPV6地址来计算哈希值。该方法保证了来自相同地址的请求将到达同一服务器,除非不可用。
upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
}

​ 如果其中一台服务器需要暂时从负载平衡循环中删除,则可以使用down参数对其进行标记,以保留客户端IP地址的当前哈希值。该服务器要处理的请求将自动发送到组中的下一个服务器:

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com down;
}
  1. Generic Hash 将请求发送到的服务器是根据用户定义的键确定的,该键可以是文本字符串,变量或组合。例如,密钥可以是成对的源IP地址和端口,或者是本示例中的URI:
upstream backend {
    hash $request_uri consistent;
    server backend1.example.com;
    server backend2.example.com;
}

​ 指令的可选consistent 参数hash启用ketama一致性哈希负载均衡。根据用户定义的哈希键值,请求在所有upstream服务器上平均分配。如果将upstream服务器添加到upstream组中或从upstream组中删除,则只对少数几个键会被重新映射,从而在负载均衡缓存服务器或其他积累状态的应用程序的情况下最大程度地减少缓存丢失。

  1. Least Time(NGINX Plus only) 对于每个请求,NGINX Plus选择具有最低平均延迟和最低活动连接数的服务器,其中最低平均延迟是根据包含在指令中的以下参数中的来计算的least_time:
1. header –从服务器接收第一个字节的时间
2. last_byte –是时候从服务器接收完整响应了
3. last_byte inflight –考虑到请求不完整的时间,可以从服务器接收完整的响应
upstream backend {
    least_time header;
    server backend1.example.com;
    server backend2.example.com;
}
  1. Random 每个请求将传递到随机选择的服务器。如果two指定了参数,首先,NGINX考虑服务器权重随机选择两个服务器,然后使用指定的方法选择这些服务器之一:
1. least_conn –活动连接最少
2. least_time=header(NGINX Plus)–从服务器接收响应标头的最短平均时间($upstream_header_time)
3. least_time=last_byte(NGINX Plus)–从服务器接收完整响应的最短平均时间($upstream_response_time)
upstream backend {
    random two least_time=last_byte;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
    server backend4.example.com;
}
这次就写到这里,下次继续完善,觉得对你有帮助的话,就点歌赞呗
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值