1.概述
Nginx是高新能的http和反向代理服务器支持50000个并发连接数
2.反向代理
1.正向代理
在客户端配置代理服务器,通过服务器进行互联网访问

2.反向代理
只需要请求发送到反向代理服务器,由反向代理服务器通过规则去选择目标服务器获取数据返回给客户端

3.负载均衡
将原先单个请求服务器通过负载均衡分发到多个服务器上面

4.动静分离
将动态页面和静态页面由不通的服务器来解析,加速解析速度,降低单台服务器压力

5.下载安装nginx见
https://editor.youkuaiyun.com/md/?articleId=121239576
6.Nginx操作常用命令
1.查看nginx版本号
./nginx -v

2.关闭nginx
./nginx -s stop

3.启动nginx
./nginx -p /home/nginx/run -c /home/nginx/conf/nginx.conf
指定进程目录和配置文件

4.重新加载nginx即可重新加载配置文件
./nginx -s reload

7.Nginx配置文件
(1).nginx配置文件有三部分组成
1.全局块
从配置文件开始到events块之间的内容,主要设置一些影响Nginx服务器整体运行的配置指令,主要包括配置运行Nginx服务器的用户(组),允许生成的worker process数,进程PID存放路径,日志存放路径以及配置文件的引入等

比如worker_processes 4 值越大,可以支持的并发处理量越多
2.event块
event块涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启多 worker process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个work process可以同时支持的最大连接数等

use epoll 表示使用epoll模型
worker_connections 单个进程允许的客户端最大连接数
3.http块
Nginx最频繁的配置
①http全局块
http全局块配置的指令包括文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单链接请求数上限等

②server块
这块和虚拟机主机密切关系,虚拟机从用户角度和一台独立的硬件主机完全一样的,该技术的产生是为了节省互联网服务器硬件成本
每个http块可以包含多个server块,而每个server块相当于一个虚拟主机
而每个server块也分为全局server块,以及可以同时包含多个location块

1.全局server块
本虚拟机监听配置和本虚拟机名称和ip配置
2.location块
主要基于Nginx服务器接收到的请求字符串(如/server_name/uri-string),对虚拟机名称之外的字符串(如/uri-string)进行匹配,对特定的请求进行处理,地址定向,数据缓存,应答控制等功能,
8.配置反向代理
server {
listen 8001;
underscores_in_headers on;
location / {
#allow 127.0.0.1;
#allow 10.131.114.;
#deny all;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
root html;
index index.html index.htm;
}
#配置反向代理转发
location ~ /aaa {
proxy_pass_request_headers on;
proxy_pass http://10.1.208.227:8080;
}
location ~ /bbb {
proxy_pass_request_headers on;
proxy_pass http://10.1.208.227:8081;
}
#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
= 用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理请求
~ 用于表示uri包含正则表达式,并区分大小写
~* 用于表示uri包含正则表达式,并不区分大小写
^~ 用于不含正则表达式的uri前,要求nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配
9.配置负载均衡
#负载规则
upstream op_nengkai {
#代理商-op-能开
server 100.76.2.49:8000;
server 100.76.2.50:8000;
}
server {
listen 8001;
location / {
#allow 127.0.0.1;
#allow 10.131.114.;
#deny all;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
root html;
index index.html index.htm;
}
#配置能开转发
location ~ /test{
proxy_pass_request_headers on;
proxy_pass http://op_nengkai
}
1.轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
2.weight
weight代表权重,默认为1,权重越高被分配的客户端越多
upstream op_nengkai {
#代理商-op-能开
server 100.76.2.49:8000 weight=5;
server 100.76.2.50:8000 weight=10;
}
3.ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,就可以解决session问题
upstream op_nengkai {
ip_hash;
#代理商-op-能开
server 100.76.2.49:8000;
server 100.76.2.50:8000;
}
4.fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream op_nengkai {
#代理商-op-能开
server 100.76.2.49:8000;
server 100.76.2.50:8000;
fair;
}
10.静态资源服务器
server {
listen 9901;
server_name localhost2;
location /www/ {
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
root /data;
index index.html index.htm;
}
location /image/ {
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
root /data/;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /apps/data/nginx/html;
}
}
11.Nginx高可用的集群
keepalived实现高可用可以参考keepalived的部署

12.Nginx原理
1.master和worker
例如启了4个worker进程



2.worker如何进行工作的
客户端发送请求到master,worker争抢到任务来调度

3.一个master多个worker有好处
1.可以使用nginx -s reload 热部署,利于nginx进行热部署操作
2.每个worker是独立的进程,如果其中一个worker出现问题,其他的worker继续进行争抢,实现请求的过程,不会造成服务中断

4.设置多少个worker合理
Nginx同redis类似采用了io多路复用,每个worker都是一个独立的进程,但每个进程只有一个主进程,通过异步非阻塞的方式来处理请求,即使千万个请求也不再话下,每个worker线程可以把一个cpu的性能发挥到极致,所以worker数和服务器的cpu数相等最为合适,设置少了会浪费cpu,多了会造成cpu频繁切换上下文带来的损耗
5.连接数worker_connection
这个值是表示每个worker进程所能建立连接的最大值,所以一个nginx能建立的最大连接数应该是worker_connecitonworker_processes,不过这里说的最大连接数是对于HTTP请求本地资源来说,能够支持的最大并发数量是worker_connecitonworker_processes,如果是支持HTTP1.1的浏览器每次访问占2个连接,所以访问普通静态资源最大并发数是worker_connecitonworker_processes/2,如果是http作为反向代理,最大并发数量是worker_connecitonworker_processes/4,因为作为方向代理服务器,每个并发会建立与客户端的连接和后端服务的连接,会占用2个连接
总结
在支持http1.1情况下

457

被折叠的 条评论
为什么被折叠?



