nginx基础知识

121 阅读3分钟

1 nginx概念

轻量级的Web服务器、反向代理服务器,内存占用少,启动快,高并发能力强

2 正向代理和反向代理

2.1 正向代理

  1. 在客户端配置VPN的地址和端口,实现访问google服务
  2. 用户知道的主动的一种代理行为
  3. 正向代理代理的是客户端

2.2 反向代理

  1. 通过公网访问内网时,不能直接访问内网地址,我们会访问一个公网地址,即代理服务器地址,在代理服务器中配置到内网的代理
  2. 用户不知道内网地址,不知道最终访问的服务器
  3. 反向代理代理的是服务器

3 master和worker

  1. master进程:读取并验证配置文件nginx.conf;管理worker进程
  2. worker进程:每一个worker进程都维护一个线程(避免线程切换),一般与CPU个数有关

4 nginx热部署

热部署两种方案,修改配置文件nginx.conf后

  1. master推送给worker更新配置信息,worker收到后进行更新
  2. 重新生成新的worker,以新的配置处理新的请求,老worker处理完毕后kill即可

nginx采用的是第二种方式

5 nginx如何实现高并发下的高效处理

采用了Linux的epoll模型,epoll模型基于事件驱动机制,它可以监控多个事件是否准备完毕,如果OK,那么放入epoll队列中,这个过程是异步的。worker只需要从epoll队列循环处理即可

6 nginx挂了怎么办

Keepalived+Nginx实现高可用

  1. 请求不要直接打到Nginx上,应该先通过Keepalived(这就是所谓虚拟IP,VIP)
  2. Keepalived应该能监控Nginx的生命状态(提供一个用户自定义的脚本,定期检查Nginx进程状态,进行权重变化,,从而实现Nginx故障切换)

7 nginx.conf

  1. location:~ 代表自己输入的英文字母
匹配符匹配规则优先级
=精确匹配1
^~以某个字符串开头2
~区分大小写的正则匹配3
~ *不区分大小写的正则匹配4
!~区分大小写不匹配的正则5
!~*不区分大小写不匹配的正则6
/通用匹配,任何请求都会匹配到7
  1. nginx能够提高速度的原因就有动静分离,静态资源放到nginx上,动态资源请求后台
  2. nginx可以进行ip访问控制,也就是说可以增加黑名单

8 反向代理(proxy_pass)

  1. location这一段配置中的root替换成proxy_pass
  2. 比如说request -> Nginx -> Tomcat,那么对于Tomcat而言,请求的IP地址就是Nginx的地址,而非真实的request地址,这一点需要注意。不过好在Nginx不仅仅可以反向代理请求,还可以由用户自定义设置HTTP HEADER

9 负载均衡(upstream)

  1. 通过upstream来定义一组Tomcat,并指定负载策略(IPHASH、加权论调、最少连接),健康检查策略(Nginx可以监控这一组Tomcat的状态)
  2. 将proxy_pass替换成upstream指定的值
  3. 用户状态的保存问题,如Session会话信息,不能在保存到服务器上

10 linux安装nginx

yum -y install gcc
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
wget -c <https://nginx.org/download/nginx-1.18.0.tar.gz>
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --prefix=/usr/local/nginx
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module(需要ssl)
make
make install
whereis nginx
启动 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
重启 /usr/local/nginx/sbin/nginx -s reload
停止 /usr/local/nginx/sbin/nginx -s quit
强行停止 /usr/local/nginx/sbin/nginx -s stop