Nginx
什么是Nginx简介常见的服务器
什么是反向代理什么是正向代理什么是反向代理反向代理使用场景反向代理之路由
Nginx的安装Nginx的进程模型worker抢占机制传统服务器时间处理Nginx事件处理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.模型采用的是异步非阻塞的通信模式模式,多路复用器