Nginx核心

一、概述

Nginx一个具有高性能的【HTTP】和【反向代理】功能的【WEB服务器】,同时也是一个电子邮件代理服务器。正向代理服务的是客户端(比如VPN),反向代理服务的是服务端

1、模型

Nginx采用Master-Worker多进程模型,Master负责管理Worker进程,Worker处理实际请求。Worker进程是单线程的,基于事件驱动模型(如 epoll、kqueue)实现高并发,而非传统的多线程

2、优点

  • 速度快,并发高,异步非阻塞设计,并发在5万左右。采用多进程,io多路复用技术。像Tomcat是一个重量级的服务器,并发在200左右
  • 配置简单,扩展性强
  • 高可靠性,有master进程和worker进程,其中master进行单独用于管理worker进程
  • 热部署
  • 成本低,BSD许可证(可以修改源码并且可以用来赚钱)。且 Nginx 资源占用低,降低了服务器成本

2、常用模块

  • 静态资源部署
  • Rewrite地址重写,使用正则表达式
  • 反向代理
  • 负载均衡
  • web缓存
  • 用户认证模块

3、核心组成

  • nginx:二进制可执行文件
  • nginx.conf:核心配置文件
  • error.log:错误的日志记录
  • access.log:访问日志记录
  • nginx.pid:记录nginx的Master进程id

二、安装

下载并上传到服务器,解压进入目录,执行./configure --prefix=/usr/local/nginx配置脚本并指定安装目录,然后执行make进行安装,执行make install进行安装

三、常用命令

命令是已nginx安装后的sbin目录下的nginx为基础的。可以将这个命令配置到/etc/profile文件中来成为全局命令。当然也可以使用发送信号、系统命令systemctl的方式来操作nginx

  • nginx:启动
  • nginx -s stop:直接停止
  • nginx -s quit:优雅停止,这个命令会等待所有请求结束后再关闭
  • netstat -tulnp | grep nginx:查看启动情况,此命令仅显示监听端口的主进程。其中netstat已逐渐被ss替代
  • ps -ef | grep nginx:查看运行情况
  • nginx -s reload:重启。主进程保持运行,新配置生效后,旧Worker进程处理完请求后退出重启
  • nginx -t:测试配置文件
  • nginx -V:查看版本详细参数
  • nginx -s reopen:让nginx关闭当前日志文件,并重新打开新的日志文件(根据配置中的路径),使得日志写入能无缝切换到新文件,无需重启服务
  • tail -f nginx/logs/access.log:实时查看访问日志

四、核心配置

1、标准的全局块

# 全局配置部分
#-----------------------------

# 定义工作进程数量(建议设置为CPU核心数或自动检测)
# 值:数字 或 auto
worker_processes auto;  

# user指令:用于配置运行Nginx服务器的worker进程的用户和用户组,进行安全防护。使用user指令启动的时候,可以指定Linux系统的用户和用户组,然后访问Nginx的时候,只能访问到该用户拥有权限的目录,进行权限访问控制。
#user nginx;          # 仅指定用户(系统会自动匹配用户组),永远不要以 root 运行服务!
#user nginx nginx;       # 同时指定用户和组(用户:nginx,组:nginx)

# daemon:是否已守护进程运行,默认为on

# pid:用于指定存放master进程id的文件路径

# error_log:用于配置Nginx错误日志存放的路径

# include:可以引入其他的配置文件,可以放在任何位置,放在全局块中可以引入全局块指令


# 事件模块配置(控制连接处理模型)
#-----------------------------
events {
    # 每个Worker进程允许的最大并发连接数(包含活动连接和空闲连接)。默认 512。设置值不能超过操作系统支持打开的最大句柄数量。`ulimit -n`查看支持的最大数量
    # 总最大连接数 = worker_processes * worker_connections
    worker_connections 10240;  
	
	# accept_mutex:用来设置Nginx网络连接序列化,默认为on。用来解决惊群问题,通过互斥锁(Mutex)将新连接的接收过程序列化。就是一个请求发送过来,所有的worker进程都会唤醒来抢夺这个请求,设置为on开启序列化,意为

你可能感兴趣的:(NO.1,nginx,firefox,前端)