0
点赞
收藏
分享

微信扫一扫

webrtc 设置不获取鼠标 启用回声消除

小沙坨 2023-12-12 阅读 41

Nginx概述

        一款高性能、轻量级Web服务软件。稳定性高,系统资源消耗低,对HTTP并发连接的处理能力高。单台物理服务器可支持30 000~50 000个并发请求。他实现非常高效的反向代理、负载平衡,现在中国使用nginx网站用户有很多,例如: 新浪、网易、腾讯等。

Nginx 有哪些优点

  • 跨平台、配置简单。
  • 非阻塞、高并发连接: 处理 2-3 万并发连接数,官方监测能支持 5 万并发
  • 内存消耗小: 开启 10 个 Nginx 才占 150M 内存
  • 成本低廉,且开源。
  • 稳定性高,宕机的概率非常小。
  • 内置的健康检查功能: 如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。

Nginx应用场景

  • http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
  • 虚拟主机。可以实现在一台服务器虚拟出多人网站,例如个人网站使用的虚拟机。
  • 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高岩机而某台服务器闲置的情况。
  • nginz 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

Nginx 为什么不使用多线程

Apache: 创建多个进程或线程,而每个进程或线程都会为其分配 cpu 和内存(线程要比进程小的多,所以 worker 支持比 perfork 高的并发) ,并发过大会榨干服务器资源。
Nginx: 采用单线程来异步非阻塞处理请求 (管理员可以配置 Nginx 主进程的工作进程的数量)(epoll),不会为每个请求分配 cpu 和内存资源,节省了大量资源,同时也减少了大量的 CPU 的上下文切换。所以才使得 Nginx 支持更高的并发。

Nginx和apache的区别

  • 轻量级,同样起web服务,比apache占用更少的内存和资源。
  • 抗并发,nginx处理请求是异步非阻塞的,而apache则是阻塞性的,在高并发下nginx能保持低资源,低消耗高性能。
  • 高度模块化的设计,编写模块相对简单。
  • 最核心的区别在于apache是同步多进程模型,一个连接对应一个进程,nginx是异步的,多个连接可以对应一个进程
NginxApache
nginx是一个基于事件的web服务器apache是一个基于流程的服务器
所有请求都由一个线程处理单个线程处理单个请求
nginx避免子进程的概念apache是基于子进程的
  •  静态处理,Nginx静态处理性能比Apache高。
  • Nginx可以实现无缓存的反向代理加速,提高网站运行速度。
  • Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于硬件。
  • nqinx支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级。
  • nginx是异步进程,多个连接可以对应一个进程 ;apache是同步多进程,一个连接对应一个进程。
  • Nginx高度模块化,编写模块相对简单,且组件比Apache少。
  • 高并发下nginx能保持低资源低消耗高性能。
  • Nginx配置简洁,Apache配置复杂。

Nginx的异步非阻塞机制

首先理解同步和异步的概念,这两个概念是从客户端与服务端通信交互方式来说。

同步:指服务端接收到客户端请求后,必须处理完该请求后 (发送处理结果给客户端)才会接收客户端发送来的下一个请求
异步:指服务端还没有处理完客户端请求 (没有发送处理结果给客户端),就已经接收下个客户端发来的请求了
再来理解阻塞和非阻塞的概念。这两个概念是从服务器内部处理请求的方式来说的。
阻塞:指服务器接收到请求后,如果遇到I0阳塞,当前线程会被挂起,直到IO完成后唤醒当前线程,当前线程期间不会去处理其他事情。
非阳塞:指服务器接收到请求后,如果遇到IO阻塞,当前线程不会挂起,而是会立即返回去执行下一个调用。
同步与异步,重点在于消息通知的方式。阻塞与非阻塞,重点在于等消息时候的行为。

编译安装 Nginx 服务

在 nginx官网 上下载包,关闭防火墙,将安装nginx所需软件包传到/opt目录下。

安装依赖包。nginx的配置及运行需要pcre、zlib、openssl等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。

创建运行用户、组(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)。

编译安装Nginx

检查、启动、重启、停止 nginx服务

master process 为nginx主进程,master process在nginx启动时读取配置文件里的配置信息;  master process产生管理worker process。worker process 做为工作进程来读取用户的连接请求。

nginx 平滑升级

添加 Nginx 系统服务

方法二:

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

1、全局块:全局配置,对全局生效;
2、events块:配置影响 Nginx 服务器与用户的网络连接;
3、http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;
4、server块:配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块;
5、location块:用于配置匹配的 uri ;
6、upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

日志格式设定:
$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态;成功是200,
$body_bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从哪个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

location常见配置指令,root、alias、proxy_pass
root(根路径配置):root /var/www/html
请求www.kgc.com/test/1.html,会返回文件/var/www/html/test/1.html

alias(别名配置):alias /var/www/html
请求www.kgc.com/test/1.html,会返回文件/var/www/html/1.html

proxy_pass(反向代理配置)


root 和alias 的区别

root (根目录)
location /test  {
     root /var/www;
}
处理方式: root路径+location路径   http://192.168.80.15/test/abc.html  --> /var/www/test/abc.html
alias (别名日录、虚拟目录)
location /test {
     alias var/www;
}
处理方式: alias路径替换location路径  http://192.168.80.15/test/abc.html  --> /var/www/abc.html

......
http {
......
	server {
		listen 80;
		server_name www.kgc.com;
		charset utf-8;
		location / {
			root html;
			index index.html index.php;
		}
		##添加 stub_status 配置##
		location /status { 					#访问位置为/status
			stub_status on; 				#打开状态统计功能
			access_log off; 				#关闭此位置的日志记录
		}
	}
}

3.重启服务,访问测试
systemctl restart nginx

浏览器访问 http://172.16.26.5/status
Active connections:表示当前的活动连接数,即当前与 Nginx 服务器建立的连接数。
server accepts handled requests :表示已经处理的连接信息
三个数字依次表示服务器已接收的连接数;服务器成功处理的连接数;服务器累计处理的总请求数(在保持连接模式下,请求数量可能会大于连接数量)
Reading:表示当前正在从客户端读取数据的连接数。
Writing:表示当前正在向客户端写入数据的连接数。
Waiting:表示当前空闲并等待请求的连接数。

可 curl -Ls http://172.16.26.5/status 结合 awk与if 语句进行性能监控。

基于授权的访问控制

基于客户端的访问控制

基于域名的 Nginx 虚拟主机

基于IP 的 Nginx 虚拟主机

基于端口的 Nginx 虚拟主机

举报

相关推荐

0 条评论