Nginx学习总结
1. 概念
== Nginx是一个反向代理服务器.首先代理服务器是在客户端和服务器之间添加的一个服务器,当请求发送是,会被代理服务器接收,根据代理策略分配服务器.反向代理就是客户端不需要知道访问的是哪一台服务器,只需要获得服务器返回的数据即可.而服务器可以明确的知道是哪一台客户端访问了我.正向代理则正好相反,客户端明确的知道需要访问的是哪一台服务器,服务器就不知道是那一台客户端访问了自己,但是知道是那一台代理服务器访问了自己.==
2.特点
1.占用内存少 2M
2.并发能力强 5万/秒 实测3万/秒
3.C 语言编写.
3.官网下载地址
4.核心配置文件(nginx.conf)
-
配置项
server {
listen 80; #配置监听的域名
server_name localhost;
#access_log logs/host.access.log main;
#表示反向代理具体操作 /支持正则表达式,支持所有的请求路径
location / {
root html; #root是关键字 代表代理的是一个目录
#nginx默认的首页,网址输入localhsot回车,显示该网页则表示成功安装nginx
index index.html index.htm;
}
} -
集群配置(以linux为例)
upstream jtLinux{
server 192.168.125.129:8080;#ip表示为linux的ip地址
server 192.168.125.129:8081;
server 192.168.125.129:8082;
server 192.168.125.130:8083;
server 192.168.125.130:8084;
server 192.168.125.130:8085;
}
- nginx的管理策略
- 轮询
每个请求按照时间顺序分配到不同的服务器,如果后端服务器down掉,就自动剔除了 - 权重
用于性能不均,哪个服务器分配的多些;使用”weight=数值”,例如(weight=6)来对不同的服务器进行权重分配,权重越高,发送到该服务器的请求就越高 - ip_hash
用于ip与服务器之间的绑定,比如一个访客一个固定后端服务器,解决session缓存的问题, 但是存在缺点,当某一个服务器宕机,还是会产生需要多次登录的问题 - url_hash
根据url的hash结果来分配请求,使每个url定向到一个后端服务器,后端服务器为缓存时比较有效 - fair
根据服务器响应时间分配请求
5.实现高可用
== 当某台服务器宕机时,其它服务器的压力会上升,可能导致所有服务器宕机,nginx中有一个解决方法,实现高可用;在有这些服务器的基础上,后台会存在这一些备用机(被backup修饰的),在正常工作的服务器中有着监听程序,每隔一段时间向备用机发送”I am live”的信息,当备用机没有在特定时间内收到该信息时,表示某台服务器已经宕机,备用机会启动,来替代宕掉的服务器进行工作.这样就可以实现高可用,避免因为一台服务器的损坏导致,整个后台的崩溃. ==
6.nginx相关命令
首先nginx运行会产生两个线程,一个是主线程,另一个是后台线程,当主线程出现问题时,后台线程会将主线程重启,如果使用任务管理器关闭,需要先关闭后台线程(内存占用较少的为后台线程),再关闭主线程
注意,若用命令进行操作,需要进入nginx的根目录下进行cmd操作.
- 启动nginx:
start nginx
- 重启nginx:
nginx -s reload
- 关闭nginx:
nginx -s stop
拓展:
#down表示该服务器不工作
server 192.168.xxx.xxx:8081 down;
#backup标识为备用服务器,当服务器过忙或者服务器全部宕机时,此服务器才会生效
server 192.168.xxx.xxx:8081 backup;
#max_fail表示请求失败次数,fail_timeout表示超时时间
#当达到请求失败次数,不会再向这台服务器发送请求了,当达到超时时间时才会重新向这台服务器发送请求
server localhost:8091 max_fails=1 fail_timeout=60s;