nginx

五、nginx模块配置详解

daemon on | off   默认on
- 是否以守护进程的方式运行nginx,守护进程是指脱离终端并且在后头运行的进程,关闭守护进程执行的方式可以让我们方便调试nginx
master_process on | of 默认on
- 是否以master/worker方式进行工作,在实际的环境中 nginx是以一个master进程管理多个worker进程的方式运行的,关闭后 nginx就不会fork出worker子进程来处理请求,
是用master进程自身来处理请求
- worker_processes number; 默认1
在master/worker运行方式下 worker进程的数目,一般情况下用户要配置与CPU内核数相等的worker进程
- worker_cpu_affinity cpumask[cpumask…]
- 示例:worker_cpu_affinity 1000 0100 0010 0001;
绑定worker进程到指定的cpu内核,每一个worker进程都独享一个CPU,可以在内核的调度策略上实现完全的并发
- worker_limit_nofile,默认为操作系统的限制
该值为worker进程可以打开的最大文件描述符的数量

events模块
- events模块包含了nginx了有关连接处理的配置
- worker_connections 
设置一个worker能够同时打开的最大连接数,该值最大为- - -----
- worker_rlimit_nofile的值
在nginx作为http服务器的时候,最大连接数为worker_processes 
- worker_connctions
在nginx作为反向代理服务器的时候,最大连接数为worker_processes * worker_connections / 2 

http模块
- http模块下配置有server location upstream等不同的内容
log_format
- log_format指令用于设置日志的记录格式
当nginx位于负载均衡设备,反向代理服务器之后的时候,无法直接获得客户端真实的ip,但是反向代理服务器转发的http头信息中,可以增加X-Forwarded-For信息,记录原有的客户端ip地址和原来客户端请求的服务器地址,这个时候可以通过log_format指令来设置日志格式,将X-Forwarded-For信息打入日志中

server_name
- 由于IP地址的数量有限,因此经常存在多个主机域名对应同一个ip的情况,这个时候可以按照server_name通过server块来定义虚拟主机,每个server块是一个虚拟主机,处理满足相应listen端口
和server_name的请求
- server_name与host的匹配优先级如下
- - 首先选中所有字符串完全匹配的server_name,如www.nginx.org
- - 其次选中通配符在前面的server_name,如*.nginx.org
- - 再次选择通配符在后面的server_name,如www.nginx.*
- - 最后选择使用正则表达式才匹配的server_name,如~^\.testweb\.com$
location
- location会尝试根据用户请求中的URI来匹配设置的表达式  并选中最终结果中的配置来处理用户的请求
- location [=|~|~*|^~|@] / uri / { … }
- =表示把uri作为字符串,与参数中的URI作完全匹配
- ~进行正则表达式匹配的时候,区分大小写
- ~*进行正则表达式匹配的时候,不区分大小写
- ^~表示匹配URI的时候,如果该location是最佳匹配,那么对于匹配这个location的字符串不在进行正则表达式的匹配检测
- 前面什么都没有的时候例如 location /test/my  相等于是普通字符串匹配,按照最大前置的原则匹配
- @表示仅用于nginx服务内部请求之间的重定向,带有@的location不直接处理用户请求

匹配的优先级如下
- 1、如果查询精确的命中了一个使用=前缀的location,那个它将被使用,并结束匹配
- 2、在剩下普通字符串中,将按照最大前缀匹配的原则进行匹配,将结果最后候选结果,如果最终命中的结果使用了^~前缀表示或者它是一个完全匹配,那么它将被使用,并结束匹配
- 3、正则表达式匹配时,按照正则表达式在配置文件中出现的顺序,并且只有匹配到了一条正则local,就不在匹配下面的local了
- 4、如果步骤3命中了一个匹配,那个它将被使用,否则将使用步骤2的候选结果
- (普通字符串和正则字符串的区别 ~和~*前缀表示location是正则字符串,其他前缀和无前缀表示location是普通字符串)

upstream 
- Upstream模块是与反向代理,负载均衡相关的模块
- 示例: upstream backend{
		    server backend1.example.com weight=5;
	    	server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
		}
- - 指定了一个叫backend的代理服务器,可以在proxy_pass和fastcgi_pass中使用,默认的负载均衡方式为加权轮询,可以在配置项使用使用ip_hash来使用ip哈希
- - weight指定了每个server的权重默认是1
- - max_fails指定了在fail_timeout(默认是60s)内对后端服务器请求失败的次数,达到次数后会在fail_timeout时间内不再去查询它
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峰回路转-张一峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值