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 通过提供强大的分析引擎来处理任何类型的数据,成为这方面的基…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...
Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...


