当前位置: 首页 > news >正文

nginx目录结构和配置文件

nginx目录结构

[root@localhost ~]# tree /usr/local/nginx
/usr/local/nginx
├── client_body_temp                 # POST 大文件暂存目录
├── conf                             # Nginx所有配置文件的目录
│   ├── fastcgi.conf                 # fastcgi相关参数的配置文件
│   ├── fastcgi.conf.default         # fastcgi.conf的原始备份文件
│   ├── fastcgi_params               # fastcgi的参数文件
│   ├── fastcgi_params.default       
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types                   # 媒体类型
│   ├── mime.types.default
│   ├── nginx.conf                   #这是Nginx默认的主配置文件,日常使用和修改的文件
│   ├── nginx.conf.default
│   ├── scgi_params                  # scgi相关参数文件
│   ├── scgi_params.default  
│   ├── uwsgi_params                 # uwsgi相关参数文件
│   ├── uwsgi_params.default
│   └── win-utf
├── fastcgi_temp                     # fastcgi临时数据目录
├── html                             # Nginx默认站点目录
│   ├── 50x.html                     # 错误页面优雅替代显示文件,例如出现502错误时会调用此页面
│   └── index.html                   # 默认的首页文件
├── logs                             # Nginx日志目录
│   ├── access.log                   # 访问日志文件
│   ├── error.log                    # 错误日志文件
│   └── nginx.pid                    # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp                       # 临时目录
├── sbin                             # Nginx 可执行文件目录
│   └── nginx                        # Nginx 二进制可执行程序
├── scgi_temp                        # 临时目录
└── uwsgi_temp                       # 临时目录

配置文件结构

Nginx 的配置文件通常是 /etc/nginx/nginx.conf,它采用分块的结构,主要包括以下几个部分:

示例配置文件

# 全局块:配置全局参数
user www-data;                  # 运行 Nginx 的用户
worker_processes auto;          # 工作进程数,auto 表示根据 CPU 核心数自动设置
error_log /var/log/nginx/error.log;  # 错误日志路径# 事件块:配置事件驱动模型的参数
events {worker_connections 1024;    # 每个工作进程的最大连接数
}# HTTP 块:配置 HTTP 相关的参数
http {include mime.types;         # 包含 MIME 类型配置文件default_type application/octet-stream;  # 默认的 MIME 类型sendfile on;                # 启用高效文件传输模式keepalive_timeout 65;       # 客户端连接保持时间(秒)# Server 块:配置虚拟主机server {listen 80;              # 监听 80 端口server_name example.com;  # 服务器域名# Location 块:配置请求的 URI 匹配规则location / {root /var/www/html;  # 静态文件的根目录index index.html;    # 默认首页文件}}
}

全局块:配置 Nginx 的全局参数,如运行用户、工作进程数、错误日志等。

事件块:配置事件驱动模型的参数,如每个工作进程的最大连接数。

HTTP 块:配置 HTTP 相关的参数,如 MIME 类型、文件传输模式、连接保持时间等。

Server 块:配置虚拟主机,定义监听的端口和域名。

Location 块:配置请求的 URI 匹配规则和处理逻辑。

另外一个案例

worker_processes  1; #允许进程数量,建议设置为cpu核心数或者auto自动检测,注意Windows服务器上虽然可以启动多个processes,但是实际只会用其中一个events {#单个进程最大连接数(最大连接数=连接数*进程数)#根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。worker_connections  1024;
}http {#文件扩展名与文件类型映射表(是conf目录下的一个文件)include       mime.types;#默认文件类型,如果mime.types预先定义的类型没匹配上,默认使用二进制流的方式传输default_type  application/octet-stream;#sendfile指令指定nginx是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度。sendfile        on;#长连接超时时间,单位是秒keepalive_timeout  65;#虚拟主机的配置server {#监听端口listen       80;#域名,可以有多个,用空格隔开server_name  localhost;#配置根目录以及默认页面location / {root   html;index  index.html index.htm;}#出错页面配置error_page   500 502 503 504  /50x.html;#/50x.html文件所在位置location = /50x.html {root   html;}}}

静态文件服务

Nginx 可以高效地提供静态文件服务

server {listen 80;                  # 监听 80 端口server_name example.com;    # 服务器域名location / {root /var/www/html;     # 静态文件的根目录index index.html;       # 默认首页文件}location /images/ {root /var/www;          # 图片文件的根目录}
}

root /var/www/html;:指定静态文件的根目录为 /var/www/html。

index index.html;:当访问根路径时,默认返回 index.html 文件。

location /images/:匹配以 /images/ 开头的请求,从 /var/www/images 目录提供文件。

反向代理

Nginx 可以作为反向代理服务器,将客户端请求转发到后端服务器。

server {listen 80;                  # 监听 80 端口server_name example.com;    # 服务器域名location / {proxy_pass http://localhost:8080;  # 将请求转发到本地的 8080 端口proxy_set_header Host $host;       # 设置请求头proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

proxy_pass http://localhost:8080;:将请求转发到本地的 8080 端口。

proxy_set_header:设置转发请求的头信息,确保后端服务器能获取正确的客户端信息。

负载均衡

Nginx 支持多种负载均衡算法,可以将请求分发到多个后端服务器。

# 定义后端服务器组
upstream backend {server backend1.example.com;  # 后端服务器 1server backend2.example.com;  # 后端服务器 2server backend3.example.com;  # 后端服务器 3
}server {listen 80;                  # 监听 80 端口server_name example.com;    # 服务器域名location / {proxy_pass http://backend;  # 将请求转发到后端服务器组}
}
upstream backend:定义一组后端服务器。proxy_pass http://backend;:将请求转发到 backend 服务器组。Nginx 默认使用轮询(Round Robin)算法分发请求。

动静分离

动静分离 是一种常见的优化策略,将动态请求(如 API、PHP、Java 等)和静态资源(如
HTML、CSS、JS、图片等)分开处理。Nginx 可以通过配置实现动静分离,从而提高服务器的性能和可维护性。

动静分离的原理

静态资源:由 Nginx 直接处理并返回给客户端,无需经过后端应用服务器。
动态请求:由 Nginx 转发到后端应用服务器(如 Tomcat、Node.js、PHP-FPM 等)处理。

Nginx 动静分离配置

server {listen 80;                  # 监听 80 端口server_name example.com;    # 服务器域名# 静态资源处理location /static/ {root /var/www;          # 静态资源的根目录expires 7d;             # 设置缓存过期时间为 7 天}# 动态请求处理location / {proxy_pass http://localhost:8080;  # 将动态请求转发到后端服务器proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}# 其他静态资源(如图片、CSS、JS)location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ {root /var/www/static;   # 静态资源的根目录expires 30d;            # 设置缓存过期时间为 30 天}
}

配置详解

(1)静态资源处理
location /static/:匹配以 /static/ 开头的请求。root /var/www;:静态资源的根目录为 /var/www,因此实际文件路径为 /var/www/static/。expires 7d;:设置静态资源的缓存过期时间为 7 天,减少客户端请求。location ~* \.(jpg|jpeg|png|gif|css|js|ico)$:使用正则表达式匹配常见的静态资源文件(如图片、CSS、JS 等)。root /var/www/static;:静态资源的根目录为 /var/www/static。expires 30d;:设置缓存过期时间为 30 天。

动态请求处理

location /:匹配所有请求。proxy_pass http://localhost:8080;:将请求转发到后端服务器 localhost:8080。proxy_set_header:设置转发请求的头信息,确保后端服务器能获取正确的客户端信息。

性能优化

# 全局块
user www-data;
worker_processes auto;          # 根据 CPU 核心数自动设置工作进程数
worker_rlimit_nofile 100000;    # 每个工作进程的文件描述符限制# 事件块
events {worker_connections 4096;    # 每个工作进程的最大连接数multi_accept on;            # 同时接受多个连接use epoll;                  # 使用 epoll 事件驱动模型(Linux 专用)
}# HTTP 块
http {include mime.types;default_type application/octet-stream;sendfile on;                # 启用高效文件传输模式tcp_nopush on;              # 减少网络报文段的数量tcp_nodelay on;             # 禁用 Nagle 算法,提高响应速度keepalive_timeout 65;       # 客户端连接保持时间gzip on;                    # 启用 Gzip 压缩gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;  # 压缩的文件类型
}
worker_processes auto;:根据 CPU 核心数自动设置工作进程数。worker_connections 4096;:每个工作进程可以处理的最大连接数。sendfile on;:启用高效文件传输模式,减少文件复制的开销。gzip on;:启用 Gzip 压缩,减少传输数据量。tcp_nopush on; 和 tcp_nodelay on;:优化 TCP 传输性能。

总结

配置文件结构:Nginx 的配置文件分为全局块、事件块、HTTP 块、Server 块和 Location 块。

静态文件服务:通过 root 和 index 指令提供静态文件服务。

反向代理:通过 proxy_pass 将请求转发到后端服务器。

负载均衡:通过 upstream 定义后端服务器组,并使用 proxy_pass 分发请求。

性能优化:通过调整工作进程数、连接数、启用 Gzip 压缩等方式提升性能。

相关文章:

nginx目录结构和配置文件

nginx目录结构 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件暂存目录 ├── conf # Nginx所有配置文件的目录 │ ├── fastcgi.conf # fastcgi相关参…...

MacBook Pro(M1芯片)Qt环境配置

MacBook Pro(M1芯片)Qt环境配置 1、准备 试图写一个跨平台的桌面应用,此时想到了使用Qt,于是开始了搭建开发环境~ 在M1芯片的电脑上安装,使用brew工具比较方便 Apple Silicon(ARM/M1&#xf…...

Kotlin 使用 Springboot 反射执行方法并自动传参

在使用反射的时候,执行方法的时候在想如果Springboot 能对需要执行的反射方法的参数自动注入就好了。所以就有了下文。 知识点 获取上下文通过上下文获取 Bean通过上下文创建一个对象,该对象所需的参数由 Springboot 自己注入 创建参数 因为需要对反…...

网络安全技术简介

网络安全技术简介 随着信息技术的迅猛发展,互联网已经成为人们日常生活和工作中不可或缺的一部分。与此同时,网络安全问题也日益凸显,成为全球关注的焦点。无论是个人隐私泄露、企业数据被盗取还是国家信息安全受到威胁,都与网络…...

nginx 报错404

404:服务器无法正常解析页面,大多是配置问题(路径配置错误)、或访问页面不存在 如果你也是用nginx来转接服务的话,那你有可能碰到过这种情况,当你启动服务后,在本地打开页面,发现404,然后你找遍…...

【1.安装ubuntu22.04】

目录 参考文章链接电脑参数安装过程准备查看/更改引导方式查看/更改磁盘的分区格式关闭BitLocker加密压缩分区关闭独显直连制作Ubuntu安装盘下载镜像制作启动盘 进入BIOS模式进行设置Secure Boot引导项顺序try or install ubuntu 进入安装分区启动引导器个人信息和重启 参考文章…...

【设计模式-行为型】备忘录模式

一、什么是备忘录模式 来到备忘录模式了,这个模式我感觉相对简单一些,就是备份,或者快照。跟前面一样为了加深理解,我们引入一个电影情结来说明啥是备忘录模式,以来加深大家对备忘录模式的认识。那么,在电影…...

Linux环境下的Java项目部署技巧:安装 Mysql

查看 myslq 是否安装: rpm -qa|grep mysql 如果已经安装,可执行命令来删除软件包: rpm -e --nodeps 包名 下载 repo 源: http://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm 执行命令安装 rpm 源(根据下载的…...

云原生(五十三) | SQL查询操作

文章目录 SQL查询操作 一、数据库DDL操作 1、登陆数据库 2、创建DB数据库 二、数据表DDL操作 1、创建数据表 2、RDS中SQL查询操作 三、SQL查询操作 1、RDS中SQL查询操作 SQL查询操作 一、数据库DDL操作 1、登陆数据库 2、创建DB数据库 创建一个普通账号&#xff0c…...

【前端知识】常用CSS样式举例

文章目录 一、Flex盒子布局1. Flexbox 的基本概念2. Flex 容器的属性2.1 display2.2 flex-direction2.3 flex-wrap2.4 justify-content2.5 align-items2.6 align-content 3. Flex 项目的属性3.1 order3.2 flex-grow3.3 flex-shrink3.4 flex-basis3.5 flex3.6 align-self 4. 示例…...

硕成C语言1笔记

硕成C语言1笔记 这一节内容主要讲了进制转换 进制转换:十进制转其他进制用短除法,最后逆序输出十六进制的15表示的是F,255的十六进制是:FF其他进制转十进制:按权展开,从n的0次方开始,一直到最…...

[SAP ABAP] Debug Skill

SAP ABAP Debug相关资料 [SAP ABAP] DEBUG ABAP程序中的循环语句 [SAP ABAP] 静态断点的使用 [SAP ABAP] 在ABAP Debugger调试器中设置断点 [SAP ABAP] SE11 / SE16N 修改标准表(慎用)...

理解 InnoDB 如何处理崩溃恢复

在数据库领域,数据的一致性与可靠性至关重要。InnoDB 存储引擎的崩溃恢复机制是保障数据安全的核心,其中 Doublewrite Buffer 和 Redo Log 发挥着关键作用。下面,我们将详细探讨 InnoDB 从写入到崩溃恢复的全过程。 一、写入流程 修改页面&…...

UE5 蓝图学习计划 - Day 8:触发器与交互事件

在游戏开发中,触发器(Trigger) 和 交互事件(Interaction Events) 是实现游戏动态交互的关键。例如,当角色接近一扇门时,它可以自动打开,或者当玩家进入特定区域时,游戏触…...

根据接口规范封装网络请求和全局状态管理

封装通用页面接口网络请求 axios (request)封装见:https://blog.csdn.net/XiugongHao/article/details/143449863 /*** 封装通用页面的增删改查接口*/ export function postPageListData(pageName: string, queryInfo: any) {return request.…...

Unet 改进:在encoder和decoder间加入TransformerBlock

目录 1. TransformerBlock 2. Unet 改进 3. 完整代码 Tips:融入模块后的网络经过测试,可以直接使用,设置好输入和输出的图片维度即可 1. TransformerBlock TransformerBlock是Transformer模型架构的基本组件,广泛应用于机器翻译、文本摘要和情感分析等自然语言处理任务…...

work-stealing算法 ForkJoinPool

专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 重点是通过例子程序理解work-stealing算法原理 目录 work-stealing算法算法原理和优缺点介绍使用场景work-stealing例子代码 ForkJoinPoolnew ForkJoinPool(…...

DeepSeek Janus-Pro:多模态AI模型的突破与创新

近年来,人工智能领域取得了显著的进展,尤其是在多模态模型(Multimodal Models)方面。多模态模型能够同时处理和理解文本、图像等多种类型的数据,极大地扩展了AI的应用场景。DeepSeek(DeepSeek-V3 深度剖析:…...

STM32-时钟树

STM32-时钟树 时钟 时钟...

hot100_21. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 [], l2 [] 输出:[…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

基于Springboot+Vue的办公管理系统

角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 ​二、实现思路 总体思路: 用户通过Gradio界面上…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...