提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
第一章 nginx 简介
1.nginx概述
nginx是一个高性能的http和反向代理web服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好.
nginx专为性能优化而开发,性能是其重要的考量,实现上非常注重效率,能经受数高负载的考验,有报告表明能支持高达50000个并发连接。
2.反向代理
(1)正向代理
在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网服务(访问)。
(2)反向代理
我们只需要将请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器是一个服务器,暴露的是反向代理服务器的地址,隐藏了真实服务器的IP地址。
3.负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,这就是负载均衡。
4.动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同 的服务器来解析,加快解析速度,降低原来单个服务器的压力。
第二章 nginx安装
Nginx官网 :https://nginx.org/
nginx安装步骤:
(1)安装Gcc编辑器的支持
yum -y install pcre*
yum -y install openssl*
yum -y install gcc gcc-c++ make
yum -y install gcc-c++
yum -y install make
(2)上传并解压nginx
(3)进入/modules/nginx目录
输入ls 查看目录
输入 ./configure 进行安装
输入 make 进行安装
输入 make install 进行安装
(4)修改 ngnix.conf 配置文件
位置在: /usr/local/nginx/conf/nginx.conf
配置文件由三部分组成:全局块,events块,http块
1.全局块:从配置文件到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令。
比如 worker processes 1;值越大,可以支持的并发处理量也越多
2.events块:主要影响nginx服务器与用户的网络连接
比如:worker connections 1024 ;支持并发的最大连接数
3.http块:nginx服务器最频繁的部分包含http全局块,server块
(5)在 home/用户名/目录下创建 nginx/access.log文件
(6)在/usr/local/nginx/sbin/ 位置启动
注意:所有命令都是 root用户 操作
启动ngnix :./nginx
关闭nginx :./nginx -s stop
查看版本号 :./nginx -v
重新加载 :./nginx -s reload
第三章 配置实例
反向代理实现效果:
在浏览器地址栏输入www.123.com,跳转到Linux系统tomcat主页面
1.在Linux中安装并解压tomcat
2.配置tomcat的环境变量
3.启动tomcat 位置在tomcat/bin下
启动命令:./startup.sh
关闭命令:./shutdown.sh
4.在windos输入IP地址,进行查看 ,Tomcat默认端口号:8080
192.168.137.11:8080
5.在windos的hosts文件配置域名映射IP地址
192.168.137.11 www.123.com
6.在linux中修改配置文件,位置在/usr/local/nginx/conf目录的nginx.conf文件
7.配置完,在网址内输入www.123.com 进行查看
第四章 nginx原理
-
mater 和 worker
nginx 启动后,是由两个进程组成的。master(管理者)和worker(工作者)。
一个nginx 只有一个master。但可以有多个worker,过来的请求由master管理,worker进行争抢式的方式去获取请求。 -
master-workers 的机制的好处
首先,对于每个 worker 进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销, 同时在编程以及问题查找时,也会方便很多。
可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作
其次,采用独立的进程,可以让互相之间不会 影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的 worker 进程。当然,worker 进程的异常退出,肯定是程序有 bug 了,异常退出,会导致当 前 worker 上的所有请求失败,不过不会影响到所有请求,所以降低了风险。 -
设置多少个 worker
Nginx 同 redis 类似都采用了 io 多路复用机制,每个 worker 都是一个独立的进程,但每个进 程里只有一个主线程,通过异步非阻塞的方式来处理请求, 即使是千上万个请求也不在话 下。每个 worker 的线程可以把一个 cpu 的性能发挥到极致。所以 worker 数和服务器的 cpu 数相等是最为适宜的。设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。
worker 数和服务器的 cpu 数相等是最为适宜 -
连接数 worker_connection
第一个:发送请求,占用了 woker 的几个连接数?
答案:2 或者 4 个
第二个:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的 最大并发数是多少?
普通的静态访问最大并发数是: worker_connections * worker_processes /2,
而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4。
这个值是表示每个 worker 进程所能建立连接的最大值,所以,一个 nginx 能建立的最大连接 数,应该是 worker_connections * worker_processes。当然,这里说的是最大连接数,对于 HTTP 请 求 本 地 资 源 来 说 , 能 够 支 持 的 最 大 并 发 数 量 是 worker_connections * worker_processes,如果是支持 http1.1 的浏览器每次访问要占两个连接,所以普通的静态访 问最大并发数是: worker_connections * worker_processes /2,而如果是 HTTP 作 为反向代 理来说,最大并发数量应该是 worker_connections * worker_processes/4。因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服 务的连接,会占用两个连接。