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服务
- 关闭防火墙
Linux
systemctl stop firewalld
setenforce 0
- 安装依赖包
( 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 #提供压缩功能
- 创建运行用户、组
( Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限。)
bash
[root@localhost ~]#useradd -M -s /sbin/nologin nginx
- M 不创建家目录
- s /sbin/nologin 不允许登录用户
- 编译安装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的管理程序
- 创建软连接
(将nginx的可执行文件做个软链接,放入环境变量PATH的目录下,让系统识别nginx的操作指令。)
js
[root@localhost nginx-1.18.0]#ln -s /usr/loacl/nginx/sbin/nginx /usr/local/sbin
#让系统识别nginx的操作命令
检查、启动、重启、停止 nginx服务
- 检查:nginx -t
- 启动:
停止:kill -3
diff
- 重载(不重启的情况下,重新读取配置文件):
kill -1
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx