文章目录
Nginx
一.nginx详解
1.优势
支持高并发 (静态请求)
高性能反向代理功能(负载均衡服务器)
安装非常简单、bug很少、可在线平滑升级
模块丰富(功能丰富)
2.安装
-
yum安装(本地源,base源,epel扩展源)
方案一、使用官方源: 注意:本地yum源没有nginx的安装包,需要其他的扩展源 #安装epel yum源 (需要开启官方Base源) yum install epel-release -y 会发现多了两个yum源文件: epel.repo epel-testing.repo (epel扩展源:包含nginx) #安装nginx yum -y install nginx #启动nginx systemctl start nginx #防火墙放行 firewall-cmd --add-service=http --per firewall-cmd --reload #主配置文件:/etc/nginx/nginx.conf
-
源码安装
1.停止原有web服务卸载yum安装的nginx 2.准备源码安装依赖的环境 yum install -y gcc pcre-devel zlib-devel 注意:本地yum源版本过低,使用官方yum源:CentOS-Base.repo 3.创建程序运行用户和组 useradd -M -s /sbin/nologin nginx 4. 下载源码包 wget http://nginx.org/download/nginx-1.19.7.tar.gz 5.解包 tar -axf nginx-1.19.7.tar.gz 6.配置 cd ~/nginx-1.19.7 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx 注释: --prefix=/usr/local/nginx #指定安装目录 --user=nginx --group=nginx #指定程序运行的用户和组 7.编译安装 make && make install 8.启动服务 /usr/local/nginx/sbin/nginx netstat -tunlp | grep nginx firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload 9.客户机测试访问 10.环境优化 环境变量:PATH (命令的默认搜索路径) /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 简化命令的路径 vim /etc/profile.d/nginx.sh export PATH="/usr/local/nginx/sbin:$PATH" source /etc/profile #立即生效 以后启动只需要执行:nginx 或 nginx -c /usr/local/nginx/conf/nginx.conf ## 设置:开机自启动 echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.d/rc.local (开机会执行的脚本) chmod +x /etc/rc.d/rc.local
3.nginx服务管理
1.启动
nginx 或 nginx -c /usr/local/nginx/conf/nginx.conf
2.快速关闭
pkill -9 nginx
或者 nginx -s stop
3.重载
nginx -s reload
4.优雅的关闭
nginx -s quit4.nginx升级或者添加模块
1.进入之前编译安装的目录,清除旧数据
make clean2.重新配置,添加你需要的模块(功能)
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
–with…
(重新配置会涉及到更多依赖包,根据报错去安装)3.编译安装
make && make install4 .平滑升级
make upgrade5.查看
nginx -V#日志切割(防止单个文件过大,可以及时删除旧日志,节省磁盘空间)
cat log.sh
#!/bin/bash
dir=/usr/local/nginx
mv $dir/logs/access.log $dir/logs/date +%F
.access.log
mv $dir/logs/error.log $dir/logs/date +%F
.error.log
$dir/sbin/nginx -s reopen
find $dir/logs/ -iname “*log” -atime +3 -exec rm -rf {} ;
编辑周期性计划任务定期执行该脚本:
crontab -e
59 23 * * * /bin/bash /root/log.sh修改时间测试:
date -s “2021-11-24 23:58:50”
5.nginx配置文件详解
nginx主配置文件主要有以下几大块
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
[root@clone1 nginx]# vim /usr/local/nginx/conf/nginx.conf #user nobody;
worker_processes 1;///worker进程轻易不要调,否则会出问题,,这里的worker进程数调成了多少,对应的nginx就会生成多少worker进程。#最优值取决于许多因素,包括(但不限于)CPU核的数量、存储数据的硬盘数量及负载模式。#不能确定的时候,将其设置为可用的CPU核心数将是一个好的开始(设置为“auto”将尝试自动检测它) #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
///每个进程最大的连接数,可以适当调高一点,最大值是65535
,nginx最终的并发连接数是这里的每个进程连接数乘以上面的worker进程数目
}
http {
(这种方式可以自定义发布目录) include mime.types;
default_type application/octet-stream;server_tokens off;#隐藏软件版本号
\#定义访问日志格式 # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main;
sendfile on;#开启高效文件传输模式 #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65;#连接超时时间 #gzip on; server {
listen 80; #监听端口
server_name localhost; \#虚拟主机名称
\#charset koi8-r; //字符集设置
\#access_log logs/host.access.log main; //定义日志。编译安装的日志
location / {
#资源路径
root html; //默认发布网站目录,可以自定义
index index.html index.htm; //在发布网站目录下面有默认主页。可以写多个。按顺序访问
}
\#error_page 404 /404.html;
\# redirect server error pages to the static page /50x.html
\#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;