Nginx
Nginx
Nginx的特点
最核心的区别在于Nginx 采用异步非阻塞机制 ,多个连接可以对应一个进程;Apache 采用的是同步阻塞+多进程/线程模型,一个连接对应一个进程
- Nginx 抗并发能力更高
- Nginx 更轻量,内存、CPU资源消耗更少
- Nginx 配置简洁,使用场景多,稳定性高
Nginx的使用场景
- 用作Web网站服务,处理http静态页面请求
- 用作虚拟主机,实现一个服务器用于做多个网站站点
- 用作反向代理、负载均衡,可以作为网关代理服务器接收客户端的请求转发给后端节点服务器集群
- 用作web缓存服务器
Nginx 有哪些进程
- master进程:管理worker进程,加载配置文件
- worker进程:处理请求连接
root 和 alias 指定路径的区别
root(根目录)
处理方式: root路径+location路径
例:
#nginx.conf 配置示例
location /abc {
root /var/www;
}
url访问:
http://<IP>/abc/kfc/test.html
test.html文件存放在
/var/www/abc/kfc/test.html
http://IP地址/abc/kfc/test.html ------>> /var/www/abc/kfc/test.html
alias(别名目录、虚拟目录)
alias路径替换location路径
例:
#nginx.conf 配置示例
location /abc {
alias /var/www;
}
url访问:
http://<IP>/abc/kfc/test.html
test.html文件存放在
/var/www/kfc/test.html
http://IP地址/abc/kfc/test.html ------>> /var/www/kfc/test.html
使用源码编译安装Nginx
准备工作
- 关闭安全防护系统
systemctl disable firewalld.service --now
setenforce 0
SELINUX=enforcing --> SELINUX=0
当前我选择 Nginx1.25.5,以便等会进行平滑升级到最新版本 Nginx1.26.0
使用XFTP进行文件传输——上传到/opt目录下
- 解压文件到当前目录
cd /opt
tar xf nginx-1.25.5.tar.gz
ll
- 创建运行用户、组
useradd -M -s /sbin/nologin nginx
id nginx
安装依赖包
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
编译安装Nginx
cd /opt/nginx-1.25.5/
./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服务配置
nginx -t #检查配置文件是否配置正确
- 启动nginx服务
/usr/local/nginx/sbin/nginx
netstat -lntp | grep 80
- 查看PID进程号
cat /usr/local/nginx/logs/nginx.pid
##只有在运行时才能查看PID号
- 停止nginx服务
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx
- 重启nginx服务
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx
配置 Nginx 系统服务
方法一:
vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service 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 start nginx
netstat -lntp | grep 80
方法二:
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
说明
[Unit]:服务的说明
Description:描述服务
After:依赖,当依赖的服务启动之后再启动自定义的服务
[Service]服务运行参数的设置
Type=forking是后台运行的形式,使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径
[Install]服务安装的相关设置,可设置为多用户
访问Nginx页面
浏览器访问:
http://<本机IP>:80
平滑升级Nginx
准备工作
- 查看当前安装Nginx的版本及已模块
nginx -v #查看当前安装的Nginx版本
nginx -V #查看当前安装的Nginx已安装的模块
-
下载新版本源码安装包,并上传至/opt目录下
-
解压文件到当前目录
cd /opt tar xf nginx-1.26.0.tar.gz ll
编译安装新版本Nginx
cd /opt/nginx-1.26.0/
./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 #备份老版本Nginx
cp objs/nginx /usr/local/nginx/sbin/nginx #将新版本的Nginx移动到安装目录
make upgrade
#要保证当前 nginx 进程是通过 /usr/local/nginx/sbin/nginx 启动的,而不是通过查找环境变量中那个 nginx 命令启动的
#或者先 killall nginx ,再/usr/local/nginx/sbin/nginx
验证
- 查看Nginx是否正常启动
netstat -lntp | grep 80
- 检查当前Nginx的版本
nginx -v