nginx是一款强大的服务器,经常用来转发或者代理,它与另一款强大的服务器Apache有一点区别。
nginx是基于事件驱动的,Apache是基于进程的。nginx处理请求的时候都是在一个进程(或者几个,要看你启动的方式),而Apache每接受一个请求则需要重新开辟一个进程负责该请求连接。nginx对静态文件(使用sendfile避免了用户态和内核态切换)和短连接(epoll多路复用)的处理有强大的优势。
nginx也可以查看当前并发连接数,一般会有两种方式去查看当前连接的并发数。一种是通过web的方式,当想要通过web的方式查看的时候,你必须配置了status的模块,然后再在配置文件中进行相应的配置。一种是通过命令的方式,通过如下命令:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
nginx的所有配置都在nginx.conf文件中,修改配置以后可以平滑重启,不用停止服务。
nginx -s reload(具体nginx其他命令请查看相关文档),在平滑启动之前最好测试一下配置文件格式是否正确,可以使用命令nginx -t -c nginx.conf。
介绍常见的配置:
location匹配命令
~ #波浪线表示执行一个正则匹配,区分大小写
~* #表示执行一个正则匹配,不区分大小写
^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
= #进行普通字符精确匹配
@ #“@” 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
负载均衡的配置
nginx强大功能的之一就是负载均衡,对请求按照比例进行转发到后台处理逻辑。对于负载均衡,nginx提供了几种算法:
1、轮询(默认)
很容易理解,该算法对后台就挨个请求。发现某个失败,就自动剔除。
2、weight(轮询权值)
在轮训的基础上增加了每个节点的权重。一般应用在后台节点性能不均衡的场景,针对当前容器微服务的