Nginx
什么是Nginx
简介
1.nginx是一个高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务
2.主要功能反向代理
3.通过配置文件可以实现集群和负载均衡
4.静态资源虚拟化
常见的服务器
MS IIS
Weblogic Jboss
Tomcat Jetty
Apache Nginx
Netty
什么是反向代理
要说反向代理,就要先聊一聊正向代理
什么是正向代理
1.客户端请求目标服务器之间的一个代理服务器
2.请求会先经过代理服务器,然后再转发请求到目标服务器,获得内容后最后响应给客户端
什么是反向代理
1.用户请求目标服务器,由代理服务器决定访问哪个IP,哪个计算机节点,转发由反向代理服务器去处理的
反向代理使用场景
反向代理之路由
1.虚拟主机,路由的分发和请求
shop.zk777718.com
center.zk777718.com
api.zk777718.com/image
Nginx的安装
- 去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本
- 上传nginx到linux系统
- 安装依赖环境
(1)安装gcc环境
yum install gcc-c++
(2)安装PCRE库,用于解析正则表达式
yum install -y pcre pcre-devel
(3)zlib压缩和解压缩依赖,
yum install -y zlib zlib-devel
(4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https
yum install -y openssl openssl-devel - 解压,需要注意,解压后得到的是源码,源码需要编译后才能安装
tar -zxvf nginx-1.16.1.tar.gz - 编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错 mkdir /var/temp/nginx -p
- 在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件
./configure
–prefix=/usr/local/nginx
–pid-path=/var/run/nginx/nginx.pid
–lock-path=/var/lock/nginx.lock
–error-log-path=/var/log/nginx/error.log
–http-log-path=/var/log/nginx/access.log
–with-http_gzip_static_module
–http-client-body-temp-path=/var/temp/nginx/client
–http-proxy-temp-path=/var/temp/nginx/proxy
–http-fastcgi-temp-path=/var/temp/nginx/fastcgi
–http-uwsgi-temp-path=/var/temp/nginx/uwsgi
–http-scgi-temp-path=/var/temp/nginx/scgi
7.make make install
8. cd /usr/local/nginx/sbin
./nginx 启动nginx
停止:./nginx -s stop
重新加载:./nginx -s reload
./nginx -t
注意事项:
如果在云服务器安装,需要开启默认的nginx端口:80
填写需要打开的端口和允许访问的ip段,保存,即可查看新增的规则
如果是虚拟机:systemctl stop firewalld(关闭防火墙)
systemctl status firewalld (查看防火墙状态)
Nginx的进程模型
master进程:主进程
worker进程:工作进程
master主要是管理worker的进程,worker是做事情的,master接收到外界的指令或者信号,可以把信号传递给worker,
master会监听worker,如果worker进程异常退出了,master会重新启动一个worker进程
每一个进程相互独立的
worker抢占机制
由master主进程fork出子进程,worker,accept_mutex(互斥锁)
传统服务器时间处理
假设一个客户端client1请求被阻塞,client2就会等待,也就是VIO。为了解决这种方式,master会fork出一个新的进程worker2
Nginx事件处理
假设client1的请求阻塞了,但是nginx是异步非阻塞的,发现client1阻塞了,但是没有关系,它会去处理下一个client2,主要是worker1事件机制:use epoll;linux的epoll模型,一个工作进程差不多处理6-8W个请求,CPU越多,内存越大,处理的请求越多
如果nginx最大连接数少,用户就会出现卡顿的现象,用户请求数比较多,但是配置连接数少,
Nginx为什么能达到那么大并发,性能那么高?
1.worker的抢占机制
2.模型采用的是异步非阻塞的通信模式模式,多路复用器