本站教程收集整理的这篇文章主要介绍了【Nginx】学习文档,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。
更新日期:2020年10月25日
0. 有用的链接
官方下载地址
官方文档地址(英文)
1. 安装及简介
1.1 Nginx 版本说明
@H_355_0@mainline version 主线版本
Stable version 稳定版本
Legacy versions 旧版本
- feature 新增加的特性
- bugfix 已修复的bug
- change 重构
1.2 下载安装
操作系统版本: CentOS 7.8
Nginx 版本:Nginx-1.18.0 (2020年10月12日)
# 创建存放目录
mkdir /opt/soft
# 下载软件包
wget -P /opt/soft https://Nginx.org/download/Nginx-1.18.0.tar.gz
# 解压
tar -zxvf /opt/soft/Nginx-1.18.0.tar.gz
# 进入目录
cd /opt/soft/Nginx-1.18.0
# 配置vim下Nginx.conf文件语法高亮,如果root目录下没有.vim文件夹,创建一个即可
cp -r /opt/soft/Nginx-1.18.0/contrib/vim/* ~/.vim
# 指定安装路径,/usr/local/Nginx是默认路径,无需指定,这里只是作为示范
./configure --prefix=/usr/local/Nginx
# 编译安装
make && make install
# 进入安装目录 启动Nginx
cd /usr/local/Nginx/sbin
./Nginx
# 查看进程信息
ps -ef |grep Nginx
root 11653 1 0 23:25 ? 00:00:00 Nginx: master process ./Nginx
nobody 11654 11653 0 23:25 ? 00:00:00 Nginx: worker process
编译安装的详细说明文档
安装错误信息收集:
Q1:error: the http gzip module requires the zlib library.
A: yum install -y zlib-devel
Q2:error: the http rewrite module requires the PCRE library.
A: yum install -y pcre-devel
Q3:error: the http cache module requires md5 functions
A: yum -y install openssl openssl-devel
1.3 配置文件语法规则
截图来自极客时间
1.4 Nginx 命令
-?,-h : this Help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration tesTing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/local/Nginx/)
-c filename : set configuration file (default: conf/Nginx.conf)
-g directives : set global directives out of configuration file
1.5 将Nginx添加到环境变量
当需要执行Nginx命令时,需要进入到 sbin 目录下执行 Nginx命令,添加环境变量后则不需要那么做,可以像使用自带命令那样操作。
# 将命令路径插入环境变量配置文件
echo "export PATH=/usr/local/Nginx/sbin:$PATH" >> /etc/profile
# 重载配置文件
source /etc/profile
1.6 使用 systemctl 管理Nginx服务
# 编辑配置文件
vim /usr/lib/systemd/system/Nginx.service
# 将以下内容复制到该文件中
[Unit]
Description=Nginx
After=network.target
[service]
Type=forking
ExecStart=/usr/local/Nginx/sbin/Nginx
ExecReload=/usr/local/Nginx/sbin/Nginx -s reload
ExecStop=/usr/local/Nginx/sbin/Nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 查看状态并设置开机自启
systemctl status Nginx
systemctl enable Nginx
# 配置文件解释
[Unit]
服务的说明
Description
描述服务
After
描述服务类别
[service]
服务运行参数的设置
Type=forking
是后台运行的形式
ExecStart
为服务的具体运行命令
ExecReload
为重启命令
ExecStop
为停止命令
PrivateTmp=True
表示给服务分配独立的临时空间
[Install]
运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
2.平滑升级 Nginx
平滑升级的意思是,Nginx正在运行,在不关闭Nginx服务的情况下,进行升级操作。
Nginx默认工作在多进程模式下,即主进程(master process)启动后完成配置加载和端口绑定等动作,fork出指定数量的工作进程(worker process),这些子进程会持有监听端口的文件描述符(fd),并通过在该描述符上添加监听事件来接受连接(accept)
主进程支持的信号
TERM, INT: 立刻退出
QUIT: 等待工作进程结束后再退出
KILL: 强制终止进程
HUP: 重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程。
USR1: 重新打开日志文件
USR2: 启动新的主进程,实现热升级
WINCH: 逐步关闭工作进程
工作进程支持的信号
TERM, INT: 立刻退出
QUIT: 等待请求处理结束后再退出
USR1: 重新打开日志文件
# 查看 Nginx 版本号
/usr/local/Nginx/sbin/Nginx -V
# 升级只需要替换二进制文件
# 备份
cp /usr/local/Nginx/sbin/Nginx Nginx.old
# 将新编译完成的Nginx,复制到该目录下
cp -r /opt/soft/Nginx-1.18.0/objs/Nginx /usr/local/Nginx/sbin/ -f
cp: overwrite ‘/usr/local/Nginx/sbin/Nginx’? y
# 启动新的主进程
# 查看进程号
ps -ef |grep Nginx
# 向主进程(master)发送USR2信号,Nginx会启动一个新版本的master进程和对应工作进程,和旧版一起处理请求
kill -USR2 11910
# 可以看到如图所示的进程信息,新进程已经启动
# 关闭旧版Nginx worker进程
kill -WATCH 11910
香港vps
旧版Nginx主进程 11910 还存在,但是所有的工作节点进程以及切换到新的Nginx进程 11914。这是因为如果新版本出现问题,可以重新将Nginx旧版的进程拉起
如果这时需要回退继续使用旧版本,可向旧的Nginx主进程发送HUP信号,它会重新启动工作进程, 仍使用旧版配置文件。然后可以将新版Nginx进程杀死(使用QUIT、TERM、或者KILL)
kill -HUP 11910
升级完毕,可向旧的Nginx主进程(master)发送(QUIT、TERM、或者KILL)信号,使旧的主进程退出
kill -QUIT 11910
ps aux | grep Nginx
8.验证 Nginx 版本号,并访问测试
/usr/local/Nginx/sbin/Nginx -v
3.重载配置文件
当修改Nginx配置文件后,在不停止Nginx服务下,重新加载Nginx配置文件
./Nginx -s reload
4. 日志分割
为了日志的可读性,方便查找,通常需要将日志文件做日期分割,例如按照每天或者每周作为日志的分割点。
#!/bin/bash
#
#********************************************************************
#[Author]: NPC
#[Date]: 2020-10-25
#[Description]: Nginx Logs split
#********************************************************************
LOGS_PATH=/usr/local/Nginx/logs
HISTORY_PATH=/usr/local/Nginx/logs/history
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
# 按照日期分割访问日志文件
mv "${LOGS_PATH}/access.log" "${HISTORY_PATH}/access_${YESTERDAY}.log"
# 按照日期分割错误日志文件
mv "${LOGS_PATH}/error.log" "${HISTORY_PATH}/error_${YESTERDAY}.log"
# 重新打开日志文件
kill -USR1 $(cat /usr/local/Nginx/logs/Nginx.pid)
添加定时任务
# 将脚本文件放在 /usr/local/Nginx/sbin 目录下
# 赋予执行权限
chmod +x /usr/local/Nginx/sbin/Nginx_log_split.sh
# 设置定时任务,每天执行一次
# 添加定时任务
crontab -e
0 0 1 * * /usr/local/Nginx/sbin/Nginx_log_split.sh
# 查看定时任务
crontab -l
5. Nginx 静态Web服务器
5.1 部署一个静态网站
下载一个静态网站模板,我这里使用的是
https://templatemo.com/tm-520-highway
# 创建静态网站存放目录
mkdir /usr/local/Nginx/site
# 将模板文件解压上传到该路径下
# 修改配置文件
vim /usr/local/Nginx/conf/Nginx.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
LOCATIOn / {
#root html;
# 添加路径地址,root指定的路径是上级路径,alias指定的路径是当前路径
alias site/;
index index.html index.htm;
}
# 重载配置文件
Nginx -s reload
?
5.2 配置一个可下载的文件目录
ngx_http_autoindex_modul模块说明
这里是利用 ngx_http_autoindex_module
模块的特性,模块处理以斜杠字符结尾的请求,并生成目录列表。通常,当模块无法找到索引文件时ngx_http_index_module请求传递到此模块。ngx_http_autoindex_module``/``ngx_http_autoindex_module
# 编辑Nginx配置文件
vim /usr/local/Nginx/conf/Nginx.conf
LOCATIOn / {
alias site/;
# 启用目录列表输出
autoindex on;
# 显示文件大小,开启显示确切的文件大小,关闭则四舍五入以K、M或者G为单位
autoindex_exact_size off;
# 指定目录列表中的时间应在本地时区或 UTC 中输出
autoindex_localtime on;
# 设置目录列表的格式,可以是html、xml、json、jsonp
#autoindex_format html;
index index.html index.htm;
}
# 重载配置文件
Nginx -s reload
注意,这里访问的目录列表不是根目录,是根目录下存在的文件路径
例如,我现在的文件目录下有 img
文件夹,我的访问地址是 10.10.2.67/img/
5.3 压缩网页内容
ngx_http_gzip_module
该模块是使用”gzip”方法压缩响应的筛选器。这通常有助于将传输数据的大小减少一半甚至更多。但使用 SSL/TLS 协议时,压缩响应可能会受到BREACH攻击。
# 编辑Nginx配置文件
vim /usr/local/Nginx/conf/Nginx.conf
# 可在http或者server LOCATIOn下填写如下信息
# 开启压缩功能
gzip on;
# 最小压缩字节,表示大于20字节开始压缩
gzip_min_length 20;
# 压缩率,压缩率分为1-9个等级,等级越高压缩比率越高,一些测试文章说等级4比较合适,高于4压缩效果不明显
gzip_comp_level 4;
# 压缩文件类型
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
# 重载配置文件
Nginx -s reload
5.4 设置网页访问流量限制
这里使用的是ngx_http_core_module中的 limit_rate,设置此变量可以限制访问网站的速度,例如
# 编辑Nginx.conf配置文件
vim /usr/local/Nginx/conf/Nginx.conf
# 在server下或者LOCATIOn下设置访问速度为4k
LOCATIOn / {
#root html;
alias site/;
set $limit_rate 4k;
# 重载配置
Nginx -s reload
对于一些特殊的资源可以进一步设置限制访问,例如网站上有视频资源
LOCATIOn /flv/ {
flv;
limit_rate_after 500k;
limit_rate 50k;
}
本站总结
以上是本站教程为你收集整理的【Nginx】学习文档全部内容,希望文章能够帮你解决【Nginx】学习文档所遇到的程序开发问题。
如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。