Nginx 图解名词和命令和配置文件
-
一、Nginx 名词解释
-
1.1 什么是Nginx?
-
1.2 正向代理
-
1.3 反向代理
-
1.4 负载均衡
-
1.5 动静分离
-
-
二、Nginx安装
-
2.1 下载Nginx
-
2.2 安装Nginx相关依赖
-
2.3 下载并解压安装包
-
2.4 编译并安装Nginx
-
2.5 查看安装目录内容
-
2.6 启动Nginx
-
2.7 放行Nginx端口号
-
2.8 访问Nginx
-
-
三、Nginx常用命令和配置文件
-
3.1 常用命令
-
3.2 配置文件
-
一、Nginx 名词解释
1.1 什么是Nginx?
-
Nginx 是一个高性能的HTTP和反向代理服务端,特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现优异。
-
Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。
1.2 正向代理
-
如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,需要通过代理服务器访问。
-
在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
-
核心作用:帮助客户端访问无法直接访问的资源(如突破网络限制)、隐藏客户端真实 IP
-
典型场景:翻墙工具、企业内网代理、校园网代理

1.3 反向代理
客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。我们只需要将请求发送到反向代理服务器,由反向代理服务器选择目标服务器获取数据后,再返回给客户端。此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的IP地址。
核心作用:负载均衡、隐藏服务端真实 IP、缓存静态资源、SSL 终端
典型场景:Nginx 负载均衡、CDN 加速、API 网关

1.4 负载均衡
1.4.1 场景介绍
-
客户端发送多个请求到服务器,服务器处理请求,部分请求可能需要与数据库交互,处理完毕后将结果返回给客户端。
-
这种架构模式适用于早期系统单一、并发请求较少的场景,成本较低。但随着信息数量增长、访问量和数据量飞速提升、业务复杂度增加,会导致服务器响应缓慢,高并发时甚至直接崩溃,核心原因是服务器性能瓶颈。
-
升级服务器配置(如提高CPU频率、加大内存)的纵向扩展方式,受摩尔定律失效影响,无法满足日益增长的需求。例如天猫双十一热销商品瞬时访问量极大,即使配置顶级硬件也无法支撑。
1.4.2 解决方案
纵向扩展不可行时,采用横向扩展方式:增加服务器数量,构建集群,将请求分发到各个服务器上,分散负载压力,这就是负载均衡。

1.5 动静分离
为了加快网站的解析速度,将动态页面和静态页面交由不同的服务器解析,降低单个服务器的压力,从而提升整体访问速度。

二、Nginx安装
2.1 下载Nginx
-
官网:http://nginx.org/
-
下载地址:http://nginx.org/en/download.html
2.2 安装Nginx相关依赖
# 一键安装四个依赖环境
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2.3 下载并解压安装包
# 创建文件夹
cd /opt/module
# 创建nginx解压安装目录
mkdir nginx
# 下载tar包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
# 解压
tar -xvf nginx-1.13.7.tar.gz
2.4 编译并安装Nginx
# 进入解压后的目录
cd nginx-1.13.7/
# 指定安装目录(不指定则默认在 /usr/local/nginx)
./configure --prefix=/opt/module/nginx
# 编译
make
# 安装
make install
2.5 查看安装目录内容
# 进入安装目录
cd /opt/module/nginx
# 查看目录详情
ll
2.6 启动Nginx
sbin/nginx # 启动Nginx
sbin/nginx -s stop # 关闭Nginx
sbin/nginx -s reload # 重新加载Nginx配置
2.7 放行Nginx端口号
# 放行80端口(永久生效)
firewall-cmd --add-port=80/tcp --zone=public --permanent
# 重启防火墙
systemctl restart firewalld
# 查看放行的端口号
firewall-cmd --list-port
2.8 访问Nginx
http://服务器IP地址:80
三、Nginx常用命令和配置文件
3.1 常用命令
3.1.1 服务控制命令(启动/停止/重启)
sbin/nginx -v # 查看版本号
sbin/nginx # 启动Nginx
sbin/nginx -s stop # 关闭Nginx
sbin/nginx -s reload # 重新加载配置
sbin/nginx -t #同时验证配置语法正确性,并显示当前加载的主配置文件路径
sbin/nginx -T
sbin/nginx -v # 简洁版本信息
sbin/nginx -V # 详细版本+编译参数(含默认配置路径、加载模块)
3.1.2 日志排查
# 1. 实时查看访问日志(实时监控用户请求)
tail -f /var/log/nginx/access.log
# 2. 实时查看错误日志(排查服务启动、请求报错)
tail -f /var/log/nginx/error.log
# 3. 查看日志最后100行(快速定位近期问题)
tail -n 100 /var/log/nginx/error.log
# 4. 过滤日志中的关键字(如某个IP、URL的请求)
grep "192.168.1.1" /var/log/nginx/access.log # 过滤指定IP
grep "/api/login" /var/log/nginx/access.log # 过滤指定接口
3.1.3 进程端口排查命令
# 1. 查看 Nginx 运行进程(确认进程是否存在)
ps -ef | grep nginx | grep -v grep
# 2. 查看 Nginx 监听端口(默认80/443端口)
netstat -tlnp | grep nginx # 查看监听端口及进程
ss -tlnp | grep nginx # 兼容新版Linux系统
# 3. 排查端口占用(如80端口被其他程序占用)
lsof -i :80 # 查看80端口占用进程
3.2 配置文件
3.2.1 配置文件位置
安装目录下的 conf 文件夹中(如 /opt/module/nginx/conf/nginx.conf)
3.2.2 配置文件组成部分
-
全局块:从配置文件开始到 events 块之间的内容,设置影响Nginx整体运行的配置指令。例如
worker_processes 1,该值越大,支持的并发处理量越多。 -
events块:涉及影响Nginx与用户网络连接的指令,例如
worker_connections 1024,用于设置最大连接数。 -
http块:Nginx配置中最常用的部分,包含http全局块和server块。
3.2.3 location指令说明
3.2.3.1 匹配规则类型
-
匹配URL类型:
location [ = | ~ | ~* | ^~ ] uri { … }(可选参数,也可不带参数) -
命名location:用@标识,类似goto语句块:
location @name { … }
3.2.3.2 匹配参数解释
-
=:精确匹配,内容需与表达式完全一致
location = /abc/ {
.....
}
# 只匹配http://abc.com/abc
#http://abc.com/abc [匹配成功]
#http://abc.com/abc/index [匹配失败]
-
~:正则匹配,区分大小写
location ~ /Abc/ {
.....
}
#http://abc.com/Abc/ [匹配成功]
#http://abc.com/abc/ [匹配失败]
-
~*:正则匹配,忽略大小写
location ~* /Abc/ {
.....
}
#则会忽略 uri 部分的大小写
#http://abc.com/Abc/ [匹配成功]
#http://abc.com/abc/ [匹配成功]
-
^~:普通字符串匹配成功后,不再进行正则匹配
location ^~ /index/ {
.....
}
#以 /index/ 开头的请求,都会匹配上
#http://abc.com/index/index.page [匹配成功]
#http://abc.com/error/error.page [匹配失败]
-
无规则:默认大小写敏感、前缀匹配,等效于“”与“^”结合
location /index/ {
......
}
#http://abc.com/index [匹配成功]
#http://abc.com/index/index.page [匹配成功]
#http://abc.com/test/index [匹配失败]
#http://abc.com/Index [匹配失败]
-
@:Nginx内部跳转
location /index/ {
error_page 404 @index_error;
}
location @index_error {
.....
}
#以/index/开头的请求若返回404,将匹配@index_error规则
3.2.3.3 匹配顺序
=>^` > `|~*> 最长前缀匹配 >/
3.2.3.4 URI结尾是否带/
-
若URI为
https://domain.com/,尾部有无/均不重定向(浏览器默认添加/)。 -
若URI为
https://domain.com/some-dir/,尾部缺少/会导致重定向:URL尾部/表示目录,无/表示文件;访问/some-dir时,服务器先找some-dir文件,找不到则将其当作目录,重定向到/some-dir/。
3.2.3.5 root、proxy_pass和alias
-
root:指定文件系统目录作为请求根目录,Nginx在该目录下寻找请求文件。
-
alias:将请求映射到其他目录/文件,用于静态资源路径映射,功能类似root但可指定不同路径。
-
proxy_pass:配置反向代理,将请求转发到后端服务器,并返回后端响应。
3.2.3.6 autoindex on
开启后将列出文件夹内容。
更多推荐

所有评论(0)