Nginx网站服务

  • Post author:
  • Post category:其他


Nginx:高性能,轻量级的web服务软件。

1.稳定性高(没有apache稳)

2.系统资源消耗低(处理http请求的并发能力很高,单台服务器可支持3-5万并发请求)

稳定:一般在企业中,为了保持服务器的稳定,并发量设置在两万个左右,占用内存在2M左右。一直在keep-alive状态,3M左右。

Nginx的主要功能:

1.静态文件服务:nginx可以直接提供静态文件的服务,HTML,CSS,JAVA,Script,图片等。能够高效的处理并且响应静态文件的请求。

2.反向代理:可作为一个反向代理的服务器,将客户端的请求转发给后端多个服务器,可以实现负载均衡,高可用性和故障转移,提供更好的性能和可靠性。

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

3.处理动态内容,nginx处理动态内容很差,php node.js java python nginx可以代理请求,发送到后端的动态服务处理器,动态服务器处理完之后,nginx来把动态请求,响应到客户端。

4.可以实现 SSL/TLS 加密,HTTPS的加密方式,数字证书验证机制。

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

6.URL重定向,可以实现灵活的url重写和重定向。

7.缓存功能,nginx自带缓存功能

8.日志功能 可以详细的记录请求的信息,包括访问时间,请求路径IP地址,响应状态,有主意故障排查。

(系统控制)的日志,记录在/var/log/messages 业务日志:access.log   error.log access记录的谁访问我了,都是访问成功的记录,error日志也记录谁访问了我,但是记录的是访问失败的记录。

Nginx的主要应用场景:

1.静态服务

2.反向代理,负载均衡

3.缓存服务

4.动态服务

面试题:

nginx是如何实现高并发的?

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

2.nginx也是一个master进程控制多个work进程。master负责收集和分发请求,worker是实际执行者,每一个请求进来,master就会拉起一个worker进程处理请求。同时master进程也负责监控work的状态,work的数量和cpu要一致或者是cpu的两倍work处理请求的过程中,只受内存大小的限制,所有可以处理多个请求,再加上nginx本身就是轻量级服务,处理请求时占用的内存本身就很少,所以可以起到大并发处理的能力。

二者相互依赖,相互补充

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

nginx -v 查看nginx的版本号

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

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

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

kill后面只能跟pid号

kill -USR1 pid号   日志分割

kill -s HUP pid号    重新加载

killall -s HUR nginx        killall后面可以跟服务名,也可以用pid号

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

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

Nginx服务的主配置文件nginx.conf

user nobody  #运行用户,编译过了默认用的时编译时的用户

worker_processes /;  #工作进程就是worker进程的数量,一般是配置成

events {

worker_connections 1024;

#打开文件最大连接数,配置影响nginx服务器与用户之间的网络链接

}

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

临时修改: ulimit -n 65535 #linux只支持打开65535个

永久修改:vim  /etc/security/limits.conf

* soft nproc 65535

* hard nproc 65535

* soft nofile 65535

* hard nofile 65535

Nginx模块:

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

events:影响nginx服务器和用户的网络连接问题

http:只要模块,配置代理,缓存,虚拟主机,方向代理,只能时http请求才可写http模块中

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

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

porxy_pass 反向代理配置,写在location块中

upstream 反向代理指定服务器命令(http)

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

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



版权声明:本文为qq_39439031原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。