nginx网站服务

nginx:是一个高性能,轻量级web软件

1、稳定性高(没有Aapache稳定)  2、资源消耗比较低,体现在处理http请求的并发能力很高,单台物理服务器可以处理到3万-5万个请求

稳定:一般在企业中为了保持服务器稳定,并发量的设置在2万个左右,占用内存2M左右

nginx主要功能:1、静态文件服务:nginx可以直接提供静态文件服务,如HTML,CSS,JSP,图片(多种形态的静态文件)

2、反向代理:本身自己可以作为一个反向代理的服务器,将客户端的请求转发给后端多个服务器可以实现负载均衡

正向代理:(了解)

nginx网站服务_第1张图片

 特点:已知后端服务器,请求只会往固定的服务

反向代理:重点

nginx网站服务_第2张图片

 nginx服务器通过轮询算法随机发送给其中一台web服务器

3台web服务器组成的集群形成了负载均衡,其中坏了一台也没事

面试题:什么是反向代理

反向代理的核心:客户端在请求时,沟通代理服务器,会把请求的流量通过轮询算法转发到后台不同的服务器,实现负载均衡。

3、处理动态内容:nginx处理动态内容很差,要转发到后台可以处理动态的应用如PHP,nginx   可以代理请求,发送到后端的动态服务处理,动态服务器处理完之后再通过nginx把动态请求响应给客户端

4、可以实现SSL/TLS加密(HTTPS的加密方式)数字证书认证机制

5、虚拟主机:nginx可以在一台服务器上设置多个主机,同一个服务器可以有多个域名和站点

6、URL重定向,可以实现灵活的URL重写和重定向,例子:想访问百度结果页面跳转到了新浪

7、缓存功能:nginx自带缓存功能

nginx网站服务_第3张图片

8、日志功能:可以详细的记录请求的信息,包括访问时间,请求路径,ip地址,响应状态

有助于故障排查(系统控制的日志记录在/var/log/messages,业务日志才会保存在自己的日志中)

access.log:记录谁访问了我

error.log:记录谁访问了我,但是记录的是访问失败的

总结:nginx的核心功能   1、静态文件服务  2、反向代理  3、缓存服务

nginx的主要应用场景:1、静态服务  2、反向代理,负载均衡  3、缓存服务  4、动态服务

面试题:nginx是如何实现高并发的?

1、nginx自身代码的问题,大量的底层代理进行了优化,同时自带一个功能模块,epoll模块支持高并发

2、nginx也是一个master进程,控制多个worker进程,master负责收集和分发请求,worker才是实际执行者,每一个请求进来时master就会拉起一个worker进程来处理请求

同时master进程也负责监控worker的状态,worker的数量要和cup一致或是两倍

worker在处理请求的过程中只受内存大小的限制所以可以处理多个请求再加上nginx本身就是轻量级的服务,处理请求时占用的内存本身就很少,所以可以起到大并发处理的能力

二者之间相互依赖,相互补充

在/usr/local/nginx路径下查看,有四个文件conf、html、logs、sbin

conf:保存所有nginx的配置文件,最核心的是nginx.conf

html:保存nginx的web文件,这个目录是默认目录可以改

html文件里面还有一个50x.html是nginx默认的错误页面提示

logs:保存日志文件

sbin:nginx二进制的启动脚本,可以结合不同参数进行使用

nginx  -t:检测配置文件是否配置正确

-v:查看nginx版本号

-s:向主进程传输信号 停止,开启,重启,重新加载

-c:设置配置文件的默认路径

信号符:信号符结合kill命令

kill-USR1  pid号:日志分割       (pid号为nginx服务的pid号)

kill-s  HUP  pid号  :只要是kill只能跟pid号,重新加载

killall  -s  HUP  nginx(跟服务名,也可以用pid号)

kill  -s  QUIT  pid号:优雅退出,有人访问时不会结束进程,访问完了才会结束进程

kill  -s  WINCH  pid号:优雅的结束worker,直到请求完成才会结束worker进程  

worker_process   工作进程,也就是worker进程的数量,和cpu数量一致或者是两倍

worker_connections  每个进程可以处理的最大连接数

面试题:修改linux服务器文件的最大打开数量

ulimit  -n  65535(文件打开的最大数量,linux只支持打开65535个文件)     临时修改

永久配置  vim  /etc/security/limit.conf

在最后一行插入  
* soft nproc 65535: 最大进程数软限制为 65535,即可以使用 ulimit -u 命令查看和修改的值。
* hard nproc 65535: 最大进程数硬限制为 65535,即最大可分配的进程数。
* soft nofile 65535:最大打开文件数软限制为 65535,即可以使用 ulimit -n 命令查看和修改的值。
* hard nofile 65535:最大打开文件数硬限制为 65535,即最大可分配的文件数。

这里使用的通配符 * 表示对所有用户生效。
最后要重启一下

面试题:

nginx中的conf配置文件:有几个模块,全局模块,event模块,http模块,在http模块中又包含了sever模块,location模块

event模块:配置影响nginx服务器与用户之间的网络连接

http模块:针对http请求的配置,代理,缓存,日志,反向代理,虚拟web主机,server模块

非http请求的方式,不能写在改模块中。反向代理:七层、四层反向代理,不能写在http模块

server模块:配置虚拟主机的相关参数,一个http模块中可以有多个server模块

location模块:匹配的是uri

root和alias的区别:

root  拼接,root指定的目录和location匹配的uri之间做的一个拼接,/opt/ky30/这两个路径都要真实存在,而且都是目录,并且在uri目录里面要有web文件

alias:匹配指定路径下的web文件

root后面有没有/无所谓,加不加都可以     alias加了/,后面也必须要有/,否则匹配不到

/指向/usr/local/nginx/              root指向/usr/local/nginx/html/

root标签可以设置重定向,alias不可以设置重定向

proxy_pass:反向代理配置,也是写在location模块中

总结:全局模块,全局生效,所有模块,用户都生效

event模块:影响nginx和用户的网络连接问题

http模块:主要模块,配置代理,缓存,日志,反向代理,虚拟web主机,server模块

只能是http请求才能写在http模块中

sever模块:包含在http模块中,不能单独设置

location模块:匹配uri包含在server当中也不能单独设置

补充:proxy_pass:反向代理

stream:四层,走的是tcp或udp流量,不能写在http中,要写在全局配置中

upstream:反向代理指定服务器的命令,在http模块中

七层,基于ip和端口,走http协议,只能在http模块中

你可能感兴趣的:(nginx,服务器,运维)