Nginx(一)安装与配置

71 阅读3分钟

Nginx概述

Nginx是一款高性能的开源Web服务器和反向代理服务器,以及用于负载均衡、缓存和作为应用服务器的功能。它以其出色的性能、可扩展性和灵活性而闻名,广泛用于构建高流量的网站、应用程序和服务。

Nginx和Apache的差异

NginxApache
nginx是一个基于事件的web服务器apache是一个基于流程的服务器
所有请求都由一个线程处理单个线程处理单个请求
nginx避免子进程的概念apache是基于子进程的
nginx类似于速度apache类似于功率
nginx在内存消耗和连接方面比较好apache在内存消耗和连接上没有提高
nginx在负载均衡方面表现较好当流量到达进程极限时,apache将拒绝新的连接。
nginx不支持IBMI和openvms一样的osapache支持更多的os
nginx只具有核心功能apache提供了比nginx更多的功能
nginx的性能和可伸缩性不依赖于硬件apache依赖于cpu和内存等硬件组件
Nginx支持热部署Apache不支持热部署

优缺点对比

Nginx

  • 占用资源少
  • 抗并发
  • 模块化设计,模块编写相对简易
  • 支持热部署

Apache

  • Rewrite功能比较强大
  • 模块丰富
  • bug少,较为稳定
  • 擅长动态请求

总结

Apache会创建多个进程并为其分配资源,而Nginx则是采用单线程异步非阻塞处理请求,不会为每个请求分配资源,节省资源,得以支持更高的并发,需要性能的用Nginx,需要稳定则使用Apache,动态使用Apache,静态和反向代理可以使用Nginx

Nginx的进程

master process为主进程,管理工作进程 worker process为工作进程,处理用户的请求

同步、异步、阻塞、非阻塞

Nginx对于Apache最有力的是Nginx可以实现高并发,那么Nginx是如何实现高并发的呢?

正常来说一个server采用一个进程负责一个request的方式,那么进程数就是并发数,那导致的后果是会有很多进程在等待。 那么Nginx采用一个master进程多个woker进程的模式,master进程负责收集分发请求。每收到一个请求,master就拉起一个worker进程负责处理这个请求,同时master进程开始监控worker的状态保证可靠性

这种处理方式称作异步非阻塞工作方式,这种方式把当中的等待时间利用起来了,在需要等待的时候,这些进程就空闲出来待命,实现了高并发。

同步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致

异步:一个服务的完成需要依赖其他服务时,只通知其他依赖服务开始执行,而不需要等待被依赖的服务完成,此时该服务就算完成了。被依赖的服务是否最终完成无法确定,因此它是一个不可靠的服务序列。

阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务,函数只有在得到结果之后才会返回。

非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

编译安装Nginx

image.png

image.png

image.png

image.png

image.png

image.png

image.png

Nginx的基础命令

配置检查

image.png

启动Nginx

image.png

退出Nginx

image.png

显示版本号

image.png

将nginx加入服务

image.png


#!/bin.bash
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

image.png

image.png