NGINX

Nginx

Nginx服务基础

Nginx是一款高性能轻量级 的反向代理Web服务器,用于 HTTP、 HTTPS、SMTP、POP3和IMAP 协议。它实现非常高效的反向代理、负载平衡,它可以处理2-3万并发连接数,官方监测能支持5万并发。

Nginx优点

  • 跨平台、配置简单,非阻塞、高并发连接: 处理2-3万并发连接数,官方监测能支持5万并发

  • 内存消耗小:开启10个nginx才占150M内存 ,nginx处理静态文件好,耗费内存少

  • 内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器,重新将请求提交到其他的节点上。

  • 节省宽带:支持GZIP压缩,可以添加浏览器本地缓存

  • 稳定性高:宕机的概率非常小

  • 接收用户请求是异步的

Nginx主要应用场景

  • http服务器

Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

  • 虚拟主机

可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。

  • 反向代理,负载均衡

当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

  • nginz 中也可以配置安全管理

比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦载

Nginx 和 Apache 的差异

  • Nginx 是异步非阻塞进程,多个连接可以对应一个进程,Apache 是同步多进程,一个连接对应一个进程

  • Nginx 可以实现无缓存的反向代理加速,提高网站运行速度

  • Nginx 的性能和可伸缩性不依赖于硬件,Apache 依赖于硬件

  • Nginx 支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级

  • Nginx 高度模块化,编写模决相对简单,且组件比 Apache 少

  • Nginx 高并发下能保持低资源低消耗高性能

  • Nginx 配置简洁,Apache 配置复杂

  • Nginx 是基于事件的web服务器,Apache 是基于流程的web服务器

  • 轻量级,Nginx 比 Apache 占用更少的内存及资源

  • 静态处理,Nginx 静态处理性能比 Apache 高

同步和异步

  • 同步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致
  • 异步:一个服务的完成需要依赖其他服务时,只通知其他依赖服务开始执行,而不需要等待被依赖的服务完成,此时该服务就算完成了。被依赖的服务是否最终完成无法确定,因此它是一个不可靠的服务序列。

阻塞与非阻塞

  • 阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务,函数只有在得到结果之后才会返回。
  • 非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

编译安装Nginx服务

  1. 关闭防火墙
Linux 复制代码
systemctl stop firewalld
setenforce 0
  1. 安装依赖包

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

Linux 复制代码
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#各程序作用解释如下:  
gcc                #C语言的编译器
gcc-c++            #C++的编译器
make               #源代码编译器(源代码转换成二进制文件)
openssl-devel      #加密,证书认证
pcre-devel         #perl的接口开发包,提供正则表达式  
zlib-devel         #提供压缩功能
  1. 创建运行用户、组

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

bash 复制代码
[root@localhost ~]#useradd -M -s /sbin/nologin nginx
- M 不创建家目录 
- s /sbin/nologin 不允许登录用户
  1. 编译安装Nginx

(将nginx-1.18.0.tar.gz安装包放入/opt下解压)

bash 复制代码
[root@localhost opt]#cd nginx-1.18.0/
[root@localhost nginx-1.18.0]#./configure \
> --prefix=/usr/local/nginx \    #指定nginx的安装路径
> --user=nginx \                    #指定用户名
> --group=nginx \                  #指定组名 
> --with-http_stub_status_module
#启用 http_stub_status_module 模块以支持状态统计
bash 复制代码
[root@localhost nginx-1.18.0]#make -j 2 && make install
- j 可选择几核编译,看cpu设置
js 复制代码
[root@localhost nginx]#ll
总用量 4
drwxr-xr-x. 2 root root 4096 8月  23 17:29 conf       #nginx的配置文件
drwxr-xr-x. 2 root root   40 8月  23 17:29 html       #nginx的网页根目录
drwxr-xr-x. 2 root root    6 8月  23 17:29 logs      #nginx的日志文件
drwxr-xr-x. 2 root root   19 8月  23 17:29 sbin      #nginx的管理程序
  1. 创建软连接

(将nginx的可执行文件做个软链接,放入环境变量PATH的目录下,让系统识别nginx的操作指令。)

js 复制代码
[root@localhost nginx-1.18.0]#ln -s /usr/loacl/nginx/sbin/nginx /usr/local/sbin
#让系统识别nginx的操作命令

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

  1. 检查:nginx -t

- 启动:

停止:kill -3

diff 复制代码
-   重载(不重启的情况下,重新读取配置文件):

kill -1
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx

相关推荐
Mapmost6 小时前
【从零打造视觉盛宴·进阶篇】城市场景建模避坑指南,常见问题轻松破!
笔记·强化学习·数据可视化
yumuing3 天前
Visual-RFT视觉强化微调:用「试错学习」教会AI看图说话
算法·强化学习·图像识别
林泽毅3 天前
SwanLab简明教程:从入门到高手
深度学习·机器学习·强化学习
Mr.Winter`5 天前
深度强化学习 | 详解过估计现象与Double DQN算法(附Pytorch实现)
人工智能·pytorch·深度学习·神经网络·自动驾驶·ros·强化学习
deephub5 天前
Visual-RFT:基于强化学习的视觉语言模型微调技术研究
人工智能·语言模型·自然语言处理·大语言模型·强化学习
Nicolas8935 天前
【大模型实战篇】vllm本地部署阿里最新的QwQ-32B推理模型以及体验
大模型·强化学习·千问·r1·推理模型·32b
随机惯性粒子群6 天前
wheel_legged_genesis 开源项目复现与问题记录
学习·开源·github·强化学习·genesis
山顶夕景15 天前
【LLM】R1复现项目(SimpleRL、OpenR1、LogitRL、TinyZero)持续更新
llm·强化学习·deepseek·r1
一颗小树x16 天前
机器人学习模拟框架 robosuite 支持强化学习和模仿学习 (1) 快速入门
机器人·强化学习·模拟·robosuite·模仿学习
误伤这又何妨24 天前
【动手学强化学习】03马尔可夫决策过程
强化学习