“Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的IO性能,时常用于服务端的反向代理和负载均衡。”
这是官网中的原话,主要表达了几点内容:
1. nginx是什么?是一个服务器;
2. 它是轻量级的,意味着它相比于其他的服务器消耗资源少、更加快捷;
3. 它是高并发的;
4. 用于反向代理和负载均衡。
那么什么是反向代理,什么又是正向代理呢?
正向代理
正向代理就是我们想要访问一个服务器,但是我们并没有访问这个服务器的权限,那么我们可以找一个有权限访问这个服务器的代理服务器,由这个代理服务器将我们的请求信息转发给目标服务器,目标服务器给出相应之后再由这个代理服务器转发给客户端。比如Google的翻墙工具,就是典型的正向代理。
反向代理
再来看看什么是反向代理。反向代理和正向代理正好相反,它是属于服务端的东西。客户端发送请求,想要访问服务器的内容,发送的请求会被发送到代理服务器上,这个代理服务器再把内容发送到内部的服务器上,客户端不会知道最终服务器的地址,这提高了服务端的安全性。而正向代理中,客户端是知道目标服务器的地址的,并且客户端可以隐藏自身信息的同时访问服务器,这是及其不安全的。
负载均衡
使用反向代理的主要用途就是为多个服务器提供负载均衡和缓存等功能。负载均衡就是一个网站的内容被部署到若干个服务器上,使用反向代理可以把客户端的请求分配给这些服务器,从而实现服务器压力的分配。
Nginx是如何实现负载均衡的呢?在nginx启动后,会有一个master进程和多个worker进程,master进程主要是用来接收来自外界的信号,并且监控worker进程的运行状态,如果worker进程出现异常,会自动重启新的worker进程。Worker进程就负责把从master接收到的信号发给目标服务器。Worker的进程数和单个进程的最大并发量都是可以设置的。
Nginx目录
Nginx下载后,它的目录里是这些文件和文件夹:
点击nginx.exe之后就启动了nginx,这时候打开浏览器访问localhost,就可以看到这个页面:
Logs文件夹
进入logs文件夹,就可以看到这几个文件:
其中access.log文件是nginx正常访问的日志,error.log是nginx的错误日志,nginx.pid是存放pid的文件。
那么什么是pid呢?Nginx为了防止用户启动多次,比如在2000端口启了一个nginx,在3000端口又启了一个,这时候就需要pid作为标识。在nginx启动的时候,会先检测有没有pid文件,如果没有,就会创建一个,把nginx自己的id写进去。如果有,但是没有任何一个已启动的进程的id与文件中的id重复,那么就会启动这个nginx,并把本次启动的id写入pid文件中。如果检测到的pid与启动的一个进程的pid相同,说明这个nginx已经被启动过了,那这次启动就会报错。
Html文件夹
Html文件夹就是存放静态资源的文件夹。可以在里面放一些静态的html文件,或者一些图片,在nginx的页面上,访问文件名称的地址,就能访问到这些静态资源。如:localhost/index.html。
Conf文件夹
这里我们重点关注nginx.conf文件
Nginx命令
windows 启动 双击nginx.exe文件、./nginx.exe
重启 ./nginx - s reload
停止 ./nginx - s stop
linux 启动 nginx(CentOS7.4)、systemctl start nginx.service
重启 systemctl restart nginx.service、nginx -s reload
停止 立即停止服务 nginx -s stop
从容停止服务 nginx -s quit
杀死进程 killall nginx.service
systemctl停止 systemctl stop nginx.service
linux如何知道已经启动? ps aux | grep nginx
出现以下信息说明启动成功: