Nginx
什么是Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 [13] ,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
Nginx的特点
一款高性能、轻量级web服务
稳定性高
系统资源消耗低高
对HTTP并发连接的处理能力
单台物理服务器可支持30000~50000个并发请求
Nginx编译安装过程
安装支持软件
创建运行用户、组
编译安装Nginx
Nginx运行控制
检查配置文件
启动、重载配置、停止Nginx
Nginx和Apache的区别
nginx相对于apache的优点
1:轻量级,同样起web服务,比apache占用更少的内存及资源
2:抗并发,nginx处理请求是异步非阻塞的,而apache是阻塞型的,在高并发下,nginx能保持低资源低消耗高性能
3:高度模块化的设计,编写模块相对简单
apache相对于nginx的优点
1:Rewrite比nginx的rewrite强大 (rewrite的主要功能就是实现统一资源定位符URL的跳转)
2:模块多,基本想到的都可以找到
3:少bug, nginx的bug相对较多
4:超稳定
5:总结:一般来说,需要性能的web服务,用nginx。 若不需要性能只求稳定,就选用apache
小节
apache是同少进程的模型,一个链接对应一个进程
Nginx是异步的,多个链接(万级别),一个链接对应一个进程
编译安装Nginx服务的操作步骤
关闭防火墙,将安装nginx所需软件包传到/opt目录下
systemctl stop firewalld
systemctl disable firewalld
cd /opt
setenforce 0
安装依赖包
#nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件
yum install -y pcre-devel zlib-devel gcc gcc-c++ make
创建运行用户、组
Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限
useradd -M -s /sbin/nologin nginx
编译安装nginx
cd /opt
tar zxvf nginx-1.12.0.tar.gz
./configure \
> --prefix=/usr/local/nginx \ #指定nginx的安装路径
> --user=nginx \ #指定用户名
> --group=nginx \ #指定组名
> --with-http_stub_status_module #启用 http_stub_status_module模块以变持状态线计
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ##让系统识别nginx的操作命令
安装完
编译完
创建软连接
检查、启动、重启、停止 nginx服务
nginx -t #检查配置文件是否配置 正确
#启动
nginx
#停止
cat /usr/local/nginx/logs/nginx.pid #先查看nginx的PID号
kill -3 <PID号> #直接杀死
kill -s QUIT <PID号> #优雅的杀死()
killall -3 nginx
killall -s QUIT nginx
#重载
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx
#日志分割,重新打开日志文件
kill -USR1 <PID号>
#平滑升级
kill -USR2 <PID号>
版本升级
新版本升级∶
tar -zxvf nginx-1.xx.xX. tar.gz
cd nginx-1.xx. xx
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module
make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
cp objs/nginx /usr/local/nginx/sbin/nginx
make upgrade
#或者先 killall nginx ,再/usr/local/nginx/sbin/nginx
脚本添加nginx
vim /etc/init.d/nginx #创建脚本文件内容如下:
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Server Control Script
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$COM
;;
stop)
kill -s QUIT $(cat $PID)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PID)
;;
*)
echo "Usage:$0 {start|stop|restart|reload}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx
systemctl daemon-reload #磁盘上的ngin服务更改,运行'systemctl daemon-reload'重新加载单元。
systemctl start nginx
systemctl stop nginx
总结
Nginx与HTTPD以静态页面处理+动态页面转发的功能上比较,Nginx优势在于“抗高并发”+“轻量级”+“性能稳定”
Nginx文件中包含了模块从全局到局部,具体匹配URL分以下集中全局模块
在此模块中定义的内容,会生效于所有位置
1:http应用于用户以http方式来访问Nginx整个过程
2:server服务适用于通过端口,IP,域名访问方式的请求
3:location匹配URL(域名)或者index.html