简介:是一个高性能的HTTP(解决C10k的问题)和反向代理服务器,也是一个IMAP/POP3/SMTP服务器(邮局服务器) C10K => connection 10000(万机高并发)
面试: nginx是一款性能强大的Web服务器,使用IO多路复用中的epoll模型,解决高并发的代理器及负载均衡设备,成为当前企业主流的Web服务器。
动:能与用户进行交互,用户查询数据时与后方数据库进行调用
静:.html/.jpg/.avi/.css/.txt ......所见即所得
- IO多路复用: < IO => input(输入)/output(输出)
- 时分多路复用 ==> CPU时钟/中断设计 (一手画圆,一手画方)
- 频分多路复用 高并发——IO多路复用——epoll——异步——非阻塞
-----------epoll IO多路复用---------------
传统方法:最传统的多进程并发模型,每进来一个新的I/O流会分配一个新的进程管理 Apache < 传统的apache在处理用户的请求时,会分出n的子进程(复制),每个进程处理一个用户的请求 当其中有一个子进程发生故障,会导致其他的子进程错误! Nginx < 当用户的请求到达nginx服务器时,服务器会有时延(时间延时) 用户1访问请求到达时,nginx会处理第一个用户的请求 这时nginx不会暂停服务,而是会在去接收用户2的请求,丢给后方服务处理后 再去对用户3的请求进行接收....... 当用户1的请求完成后,返还数据给用户1,再去接收用户4的请求....... IO:单个线程通过记录跟踪每个I/O流(sock)的状态,来同时管理多个I/O流
作用:是尽量多的提高服务的吞吐能力,在同一个线程里面,通过拨开关的方式,来同时传输多个I/O流
epoll(IO多路复用中的一种模型):线程安全,不仅告诉你sock组里面的数据,还会告诉你具体哪个sock有数据,你不用自己去找。
异步: 用户过来的请求不是同时在处理,而是多路复用处理多个请求
非阻塞: nginx处理用户的请求时,不会因为后方Web服务器的问题而暂停服务,而是会处理其他用户的请求
同步: 两边同时处理请求
阻塞: 用户的请求到达时,只处理该用户的请求,只有处理完用户请求后,才去处理其他请求。
1. 在百度上搜索 "www.nginx.org" 2. 打开页面中找到 "documentation"单击打开 3. 单击"installing" ,找到 "package"打开 4. 找到 REHEL/CentOs,打开,按照步骤安装 ------------版本-------------- 1. Mainline version: 主线版,即开发版 2. Stable version: 最新稳定版,生产环境上建议使用的版本 #选择这版本即可 3. Legacy versions: 遗留的老版本的稳定版
---------------安装nginx显示秘钥问题----------------------
wget https://nginx.org/keys/nginx_signing.key --no-check-certificate rpm --import nginx_signing.key
Nginx 配置文件 环境: rpm -ql nginx //列出nginx支持的所有模块/文件
1. /etc/logrotate.d/nginx #日志轮转 2. /etc/nginx/nginx.conf #总配置文件 3. /etc/nginx/conf.d/ #子配置文件 4. /etc/nginx/conf.d/default.conf #默认的网站配置目录 5. /etc/nginx/mime.types #文件关联程序(网站类型和相关处理的程序) 6. /etc/nginx/modules #模块文件夹/第三方模块 7. /usr/lib/systemd/system/nginx.service systemctl #服务脚本 8. /usr/sbin/nginx #主程序 9. /var/cache/nginx #缓存
Nginx编译的参数
--with-file-aio #支持异步非阻塞 --with-threads #多线程模块 --with-http_addition_module #响应式追加模块/替换模块 --with-http_auth_request_module #认证模块 --with-http_gunzip_module #压缩模块 --with-http_realip_module #代理功能,Nginx获取真实IP模块 --with-stream #负载均衡/反向代理
Nginx的主配置:vim /etc/nginx/nginx.conf
-------------核心模块------------- < worker_processes 1; #启动的worker进程数量(通常与本机的CPU数量一致或auto) -------------事件驱动模块------------- < use epoll; #事件驱动模型epoll【默认】 < worker_connections 10240; #每个worker进程允许处理的最大连接数,例如10240,65535 -------------Http模块-------------- 模块的参数优化.......
Nginx的子配置:vim /etc/nginx/conf.d/default.conf
1. listen 80 => 监听端口(可以作修改) 2. charset koi8-r; => 默认字符集(UTF8) 3. location /{ root /usr/share/nginx/html; => 网页内容存放目录 index index.html index.htm; => 网页的主页 }
1. vim /etc/nginx/conf.d/pt.conf server { listen 80; server_name pengge.com; location / { root /peng; index index.html; } } 2. 创建存放文件的目录:mkdir /peng 3. echo "penggeDaShuaiGe" >> /peng/index.html 4. 域名解析: vim /etc/hosts 192.168.178.131(本机的IP地址) pengge.com 5. 访问pengtong.com:yum -y install elinks #纯字符浏览器 elinks http://192.168.178.131