Nginx快速入门:安装目录结构详解及核心配置解读(二)
0. 引言
上节我们讲解了nginx的应用场景和安装,本节继续针对nginx的各个目录文件进行讲解,让大家更加深入的认识nginx。并通过一个实操案例,带大家来实际认知nginx的核心配置
1. nginx安装目录结构
首先nginx的默认安装目录为:/etc/nginx,默认日志目录为:/var/log/nginx
我们在安装目录下可以看到如下文件:

可以通过tree指令查看树形目录结构
# 注意提前安装tree工具
yum install tree -y
# 查看目录树形结构
tree /etc/nginx

或者大家可以通过rpm -ql nginx 指令,查询到nginx的相关目录

下面我们首先针对nginx的安装目录做详细讲解:
- nginx.conf
nginx的主配置文件
- conf.d
nginx的自定义配置文件存放路径,默认在nginx.conf最后指定了加载conf.d中的所有.conf文件,后续我们自定义配置的转发配置都会存放在该文件夹中
- modules
Nginx的一个重要特性就是支持高拓展性,可以通过灵活的加载各类拓展模块,从而丰富nginx的功能
Nginx的modules文件夹包含了Nginx的各种功能模块。这些模块可以通过配置文件进行加载和启用,以扩展Nginx的功能。modules文件夹中的每个模块都有一个对应的配置文件,这些配置文件定义了模块的具体行为。
- mime.types
Nginx的mime.types文件用于指定不同文件类型的MIME类型。MIME(Multipurpose Internet Mail Extensions)类型是一种用于标识互联网上传输的文件类型的标准。当浏览器或其他客户端请求某个文件时,Nginx会根据文件的扩展名和mime.types文件中定义的规则返回相应的MIME类型。
在这个文件中,你可以定义各种文件类型及其对应的MIME类型。例如,可以将.jpg文件类型定义为image/jpeg,将.html文件类型定义为text/html等
- fastcgi_params
fastcgi配置参数,fastcgi是由CGI(common gateway interface 通用网关接口)发展而来,是nginx和php脚本语言之间的通信接口
- scgi_params
用于处理SCGI(Simple Common Gateway Interface)请求。SCGI是一种简单的CGI实现,它允许Nginx与Python等语言的处理程序进行通信
- uwsgi_params
用于处理uWSGI请求。uWSGI是一种高性能的Python应用Web服务器,它允许Nginx与Python应用程序进行高效交互
其他常用目录或文件解析:
- /usr/share/nginx/html
nginx默认存放静态html页面的目录位置,自带了50x错误码页面和nginx首页
- /var/log/nginx
nginx的日志文件目录,包括error.log和access.log
error.log为nginx报错日志,access.log为nginx访问日志目录,包括了详细的转发请求日志,可以记录请求的来源ip、客户端设备、目标ip、耗时、请求头、请求方式等,该日志在企业生产中非常常用,能够为我们排查接口请求问题和分析请求耗时提供有力的帮助。下一节我们将详细介绍如何自定义该日志文件格式
- /usr/sbin/nginx
nginx的二进制脚本,包括启动、停止、重启等指令
2. nginx核心配置项
nginx的默认核心配置文件nginx.conf,nginx的配置项总共可分成6个模块:
- 全局段:全局配置,对全局生效;
- events段:配置影响 Nginx 服务器与用户的网络连接;
- http段:配置代理、缓存、日志等功能和第三方模块的配置,基本是nginx中最常用的配置;
- server段:配置虚拟主机的相关参数,一个 http 块中可以有多个server 块;
- location段:用于配置匹配的uri
- upstream段:配置后端服务器具体地址,负载均衡配置

下面详细讲解6个部分:
- 1、全局段核心参数
user nginx; # 指定我们Nginx服务的运行用户
worker_processes 1; # 定义Nginx的worker进程数量,一般与服务器CPU核数保持一致
worker_processes auto; # 与当前cpu物理核心数一致
error_log /var/log/nginx/error.log warn; # 指定Nginx错误日志
pid /var/run/nginx.pid; # 指定Nginx PID进程号文件
daemon off ; 指定 Nginx 的运行方式,默认是on,后台运行模式;前台用于调试,后台用于生产
- 2、events段核心参数
worker_connections 1024; # 指定Nginx当前一个worker进程的最大并发连接数,即并发能力
- 3、http段核心参数
include /etc/nginx/mime.types; # 应用文件拓展名和文件类型映射文件
default_type application/octet-stream; # 默认文件类型,当Nginx无法识别当前访问页面内容时,触发下载动作
log_format main
'$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';# 指定Nginx访问日志格式,下节详细讲解
access_log /var/log/nginx/access.log main; # 定义Nginx访问日志的位置
sendfile on; # 开启文件传输模式
keepalive_timeout 65; # 连接保持超时时间,单位秒,值为0时表示不超时,当Nginx建立TCP连接之后,多长时间没有动作,自动断开
include /etc/nginx/conf.d/*.conf; # 加载自定义的配置文件
#tcp_nopush on; # 减少网络报文段的数量
send_timeout 60s; # 如果在设置的时间内 Nginx 还没有将响应完全发送出去,则会返回 “408 Request Time-out” 错误,默认为60s
keepalive_timeout 60s; # 用于设置 Nginx 保持连接的超时时间。当浏览器发送请求时,如果它已经与 Nginx 建立了连接,则可以直接使用该连接发送请求,而不需要再次建立连接。这样就可以减少建立连接的开销,提高性能
gzip on; # 开启 gzip 文件压缩,浏览器加载的包大概能节约一半的空间,能够很好的提升浏览速度。gzip压缩的详细参数见下文
gzip_vary on; #设置使用Gzip进行压缩发送是否携带“Vary:Accept-Encoding”头域的响应头部
gzip_comp_level 6; #设置Gzip压缩程度,级别从1-9,1表示程度最低,效率最高,9压缩程度最高,效率最低最费时间
gzip_min_length 1k; #设置允许压缩的页面最小字节数
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss; #压缩的文件类型
我们在conf.d/default.conf可以看到默认的转发配置,我们借此解读下server段、location段配置
- 4、server段核心参数:
listen 80; # 监听的端口
server_name www.xxx.com; # 通过什么网址、域名请求过来的;可以设置多个,用英文逗号隔开
#error_page 404 /404.html; # 访问路径不存在时的显示页面
error_page 500 502 503 504 /50x.html; # 内部报错的显示页面
- 5、location段核心参数
location / { # 根路径 uri
root /html/xxx; # 网站的根目录位置,即静态页面目录
index index.html; # 指定首页文件
}
proxy_pass http://127.0.0.1/xxx/; # 配置转发的路径或负载均衡upstream别名,后文详细讲解
proxy_connect_timeout 3s; # 连接后台服务器的超时时间
proxy_read_timeout 3s; # 从后台服务器读取数据的超时时间
proxy_send_timeout 3s; # 向后台服务器发送数据的超时时间
- 6、upstream段核心参数
upstream test { # 负载均衡配置别名,一般配合proxy_pass使用,比如proxy_pass http://test/;
server 192.168.0.1 weight=1; # 以权重1:2转发至两个服务
server 192.168.0.2 weight=2;
}
3. 配置案例
实现需求:
配置nginx,实现当访问nginx时轮询转发至后台的两个tomcat服务
实现步骤:
1、准备两个tomcat服务,充当后台服务,将其中一个tomcat的端口修改为8081,并且调整两个tomcat的首页,显示其对应的端口号,后续好区分对应的服务
tomcat安装包下载:https://tomcat.apache.org/download-80.cgi
vim /data/tomcat1/webapps/ROOT/index.jsp


2、注意虚拟机放开8080,8081端口、或者关闭防火墙,访问tomcat验证下

3、修改conf.d/default.conf中的配置
# 后台服务地址,自定义一个负载均衡别名tomcat
upstream tomcat {server 192.168.244.41:8080;server 192.168.244.41:8081;
}server {listen 80;server_name localhost;location / {proxy_pass http://tomcat; # 通过别名实现负载均衡转发proxy_set_header HOST $host; # 代理过程中添加host头部信息,防止通过ip访问时域名解析不到,不能被server_name解析到proxy_http_version 1.1; # 指定http协议版本}
}
如果转发的后台服务只有一个,那么proxy_pass就可以直接配置转发的服务地址,也不用配置upstream负载均衡了
4、检测nginx配置并重启服务
# 检测nginx配置,如果输出 success 字样则表示检测成功,nginx配置无语法错误
nginx -t
# 热加载重启,nginx采取热部署的方式,重启期间不会中断服务
nginx -s reload
5、配置好后我们访问虚拟机ip,通过刷新可以看到可以轮询访问到两个不同的后台tomcat


总结:
如上,我们通过upstream定义了要转发的后台tomcat服务的列表,如果不做特殊定义,默认的负载均衡算法就是轮询算法,后续我们会单独开一章来详细说明nginx的负载均衡配置。
然后在server中定义了监听的端口是80端口,这样当我们通过80端口进来的访问就会进入到这个转发配置中
因为这里没有什么特殊的域名,所以server_name就定义了一个localhost
location后指定了/, 表示对所有路径生效,如果我配置的是/xxx,则只有当我们访问192.168.244.41/xxx开头的链接时才会走该转发配置
proxy_set_header参数的作用是可以设置指定的header给后台服务,这里配置了Host header, 即转发了用户访问的真正域名,否则后端服务得到的是nginx的ip, 这样对于一些动态拼接的地址,后端服务可以在服务器正确返回
proxy_http_version 1.1指定了http协议的版本,nginx代理默认http协议版本是1.0,而http1.0不支持长连接,所以这里指定了协议版本
相关文章:
Nginx快速入门:安装目录结构详解及核心配置解读(二)
0. 引言 上节我们讲解了nginx的应用场景和安装,本节继续针对nginx的各个目录文件进行讲解,让大家更加深入的认识nginx。并通过一个实操案例,带大家来实际认知nginx的核心配置 1. nginx安装目录结构 首先nginx的默认安装目录为:…...
测试TensorFlow/PyTorch的GPU版本是否启用
文章目录 1. Pytorch测试代码2. TensorFlow测试代码 后续遇到好的会不断更新。。。 1. Pytorch测试代码 import torch def gpu_is_available():print(\nGPU details:)print(f gpu_is_available : , torch.cuda.is_available())print(f cuda_device_count : , t…...
字符串逆序输出
逆序输出就是本来abc输出的,然后我想让他输出成cba,那么我们还是要用到for循环,只不过原先是从零开始往上加,这回呢,是从上面往下减 我们观察上面这个图片,我们想要输出olleh,那么我们就要从4开…...
期货平仓日历(期货平仓日期汇总)
什么是期货平仓日历? 期货是一种高风险高收益的投资品种。而期货交易不同于股票等其他投资品种的交易,期货交易需要在一定时间内才能买卖。而期货平仓日历就是指期货交易中规定的所有合约的平仓日期汇总。 常见期货平仓日期和时间? 不同的…...
计算机网络-进阶
目录 易混淆物理层数据链路层网络层nat如何实现私有ip通信IP数据报 格式解析tcp 连接tcp流量控制滑动窗口拥塞控制 报文捕获 wireshark路由模拟器 enspcdn代理服务器 VS cdn VS web cache 计算机有了物理地址,为什么还要有ip地址?单播 多播 广播 传输层会…...
LED恒流驱动芯片SM2188EN:满足LED灯具出口欧盟所需的ERP能效认证标准和要求
LED灯具是一种节能环保的照明产品,因其高效节能、长寿命等优点而备受消费者青睐,成为照明市场的主流产品。作为LED灯具出口欧盟市场的必备条件,ERP能效认证标准和要求对LED灯具的能效性能提出了严格的要求。 首先,ERP能效认证标准…...
RocketMQ系统性学习-RocketMQ原理分析之消费者的接收消息流程
🌈🌈🌈🌈🌈🌈🌈🌈 【11来了】文章导读地址:点击查看文章导读! 🍁🍁🍁🍁🍁🍁dz…...
butterfly蝴蝶分类
一、分类原因 由于植物分类所使用的数据集存在一定问题,修改起来比较麻烦,本次采用kaggle的ButterflyMothsImageClassification数据集,对100这种蝴蝶进行分类。 二、100中蝴蝶类别 ‘ADONIS’,‘AFRICAN GIANT SWALLOWTAIL’,‘AMERICAN S…...
计算机基础:网络基础
目录 一.网线制作 1.制作所需要工具 网线制作标准 编辑 2.水晶头使用 3.网线钳使用 4.视频教学 二.集线器、交换机介绍 1.OSI七层模型 2.TCP/IP四层参考模型 3.集线器、交换机。路由器介绍 集线器 交换机 路由器 区别 三.路由器的配置 1.路由器设置 说明书 设…...
[原创][R语言]股票分析实战[3]:周级别涨幅趋势的相关性
[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…...
MSVC编译 openssl windows 库
开发需要在windows下集成 openssl 库,参考官方指导完成了编译:openssl/NOTES-WINDOWS.md at master openssl/openssl 不过,最后还是走了直接下载的捷径。 1. 安装 ActivePerl 需要在 ActiveState 注册账户,之后彼会提供具体的…...
electron兼容统信UOS系统过程中的坑
这里写目录标题 找统信支持人员咨询过,他们说不对electron提供支持,如果需要兼容统信UOS还是建议换个开发技术gbm_bo_map--no-sandboxNo protocol specified任务栏图标总结 找统信支持人员咨询过,他们说不对electron提供支持,如果…...
Flink系列之:Apache Kafka SQL 连接器
Flink系列之:Apache Kafka SQL 连接器 一、Apache Kafka SQL 连接器二、依赖三、创建Kafka 表四、可用的元数据五、连接器参数六、特性七、Topic 和 Partition 的探测八、起始消费位点九、有界结束位置十、CDC 变更日志(Changelog) Source十一…...
灰盒测试简要学习指南!
在本文中,我们将了解什么是灰盒测试、以及为什么要使用它,以及它的优缺点。 在软件测试中,灰盒测试是一种有用的技术,可以确保发布的软件是高性能的、安全的并满足预期用户的需求。这是一种从外部测试应用程序同时跟踪其内部操作…...
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 快慢指针 移动零 class…...
springboot解决XSS存储型漏洞
springboot解决XSS存储型漏洞 XSS攻击 XSS 攻击:跨站脚本攻击(Cross Site Scripting),为不和 前端层叠样式表(Cascading Style Sheets)CSS 混淆,故将跨站脚本攻击缩写为 XSS。 XSS(跨站脚本攻击):是指恶意攻击者往 Web 页面里插…...
I.MX6ULL_Linux_驱动篇(47)linux RTC驱动
RTC 也就是实时时钟,用于记录当前系统时间,对于 Linux 系统而言时间是非常重要的,就和我们使用 Windows 电脑或手机查看时间一样,我们在使用 Linux 设备的时候也需要查看时间。本章我们就来学习一下如何编写 Linux 下的 RTC 驱动程…...
详解IBM企业架构框架模型CBM
(一):什么是CBM IBM的CBM是组件化业务模型(Component Business Model),是IBM在2003年提出的一种业务架构方法论。 目的是通过将企业的业务活动划分为一些独立、模块化、可重用的业务组件,来识…...
宝塔面板安装MySQL数据库并通过内网穿透工具实现公网远程访问
文章目录 前言1.Mysql 服务安装2.创建数据库3.安装 cpolar3.2 创建 HTTP 隧道 4.远程连接5.固定 TCP 地址5.1 保留一个固定的公网 TCP 端口地址5.2 配置固定公网 TCP 端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了 Linux 命令行进行繁琐的配置,下面简单几步,通…...
Elasticsearch 性能调优基础知识
Elastic Stack 已成为监控任何环境或应用程序的实际解决方案。 从日志、指标和正常运行时间到性能监控甚至安全,Elastic Stack 已成为满足几乎所有监控需求的一体化解决方案。 Elasticsearch 通过提供强大的分析引擎来处理任何类型的数据,成为这方面的基…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...


