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

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相关参…...

deepseek本地部署会遇到哪些坑

在本地部署DeepSeek(或其他类似AI模型)时,可能会遇到以下常见问题及解决方案: 1. 硬件资源不足 问题表现: GPU不兼容(如型号过旧)、显存不足(OOM错误)或CPU模式性能极低。解决方案: 确认GPU支持CUDA,检查显存需求(如至少16GB显存)。使用nvidia-smi监控显存,通过降…...

使用 PyTorch 实现逻辑回归并评估模型性能

1. 逻辑回归简介 逻辑回归是一种用于解决二分类问题的算法。它通过一个逻辑函数(Sigmoid 函数)将线性回归的输出映射到 [0, 1] 区间内,从而将问题转化为概率预测问题。如果预测概率大于 0.5,则将样本分类为正类;否则分…...

python学opencv|读取图像(五十二)使用cv.matchTemplate()函数实现最佳图像匹配

【1】引言 前序学习了图像的常规读取和基本按位操作技巧,相关文章包括且不限于: python学opencv|读取图像-CSDN博客 python学opencv|读取图像(四十九)原理探究:使用cv2.bitwise()系列函数实现图像按位运算-CSDN博客…...

【VUE案例练习】前端vue2+element-ui,后端nodo+express实现‘‘文件上传/删除‘‘功能

近期在做跟毕业设计相关的数据后台管理系统,其中的列表项展示有图片展示,添加/编辑功能有文件上传。 “文件上传/删除”也是我们平时开发会遇到的一个功能,这里分享个人的实现过程,与大家交流谈论~ 一、准备工作 本次案例使用的…...

使用真实 Elasticsearch 进行高级集成测试

作者:来自 Elastic Piotr Przybyl 掌握高级 Elasticsearch 集成测试:更快、更智能、更优化。 在上一篇关于集成测试的文章中,我们介绍了如何通过改变数据初始化策略来缩短依赖于真实 Elasticsearch 的集成测试的执行时间。在本期中&#xff0…...

【R语言】函数

一、函数格式 如下所示: hello:函数名;function:定义的R对象是函数而不是其它变量;():函数的输入参数,可以为空,也可以包含参数;{}:函数体,如果…...

Vue 3 30天精进之旅:Day 12 - 异步操作

在现代前端开发中,异步操作是一个非常常见的需求,例如从后端API获取数据、进行文件上传等任务。Vue 3 结合组合式API和Vuex可以方便地处理这些异步操作。今天我们将重点学习如何在Vue应用中进行异步操作,包括以下几个主题: 异步操…...

VSCode插件Live Server

简介:插件Live Server能够实现当我们在VSCode编辑器里修改 HTML、CSS 或者 JavaScript 文件时,它都能自动实时地刷新浏览器页面,让我们实时看到代码变化的效果。再也不用手动刷新浏览器了,节省了大量的开发过程耗时! 1…...

50. 正点原子官方系统镜像烧写实验

一、Windows下使用OTG烧写系统 1、在Windos使用NXP提供的mfgtool来向开发烧写系统。需要用先将开发板的USB_OTG接口连接到电脑上。 Mfgtool工具是向板子先下载一个Linux系统,然后通过这个系统来完成烧写工作。 切记!使用OTG烧写的时候要先把SD卡拔出来&…...

在C#中,什么是多态如何实现

在C#中,什么是多态?如何实现? C#中的多态性 多态性是面向对象编程的一个核心概念,他允许对象以多种形式表现.在C#中,多态主要通过虚方法,抽象方法和接口来实现. 多态性的存在使得同一个行为可以有多个不同的表达形式 即同一个接口可以使用不同的实例来执行不同的操作 虚方…...

搜索引擎友好:设计快速收录的网站架构

本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/14.html 为了设计一个搜索引擎友好的网站架构,以实现快速收录,可以从以下几个方面入手: 一、清晰的目录结构与层级 合理划分内容:目录结构应…...

扩散模型(三)

相关阅读: 扩散模型(一) 扩散模型(二) Latent Variable Space 潜在扩散模型(LDM;龙巴赫、布拉特曼等人,2022 年)在潜在空间而非像素空间中运行扩散过程,这…...

it基础使用--5---git远程仓库

it基础使用–5—git远程仓库 1. 按顺序看 -git基础使用–1–版本控制的基本概念 -git基础使用–2–gti的基本概念 -git基础使用–3—安装和基本使用 -git基础使用–4—git分支和使用 2. 什么是远程仓库 在第一篇文章中,我们已经讲过了远程仓库,每个本…...

Baklib如何改变内容管理平台的未来推动创新与效率提升

内容概要 在信息爆炸的时代,内容管理平台成为了企业和个人不可或缺的工具。它通过高效组织、存储和发布内容,帮助用户有效地管理信息流。随着技术的发展,传统的内容管理平台逐渐暴露出灵活性不足、易用性差等局限性,这促使市场需…...

100.1 AI量化面试题:解释夏普比率(Sharpe Ratio)的计算方法及其在投资组合管理中的应用,并说明其局限性

目录 0. 承前1. 夏普比率的基本概念1.1 定义与计算方法1.2 实际计算示例 2. 在投资组合管理中的应用2.1 投资组合选择2.2 投资组合优化 3. 夏普比率的局限性3.1 统计假设的限制3.2 实践中的问题 4. 改进方案4.1 替代指标4.2 实践建议 5. 回答话术 0. 承前 如果想更加全面清晰地…...

Ubuntu 下 nginx-1.24.0 源码分析 ngx_debug_init();

目录 ngx_debug_init() 函数: NGX_LINUX 的定义: ngx_debug_init() 函数: ngx_debug_init() 函数定义在 src\os\unix 目录下的 ngx_linux_config.h 中 #define ngx_debug_init() 也就是说这个环境下的 main 函数中的 ngx_debug_init() 这…...

基于人脸识别的课堂考勤系统

该项目是一个基于人脸识别的课堂考勤系统,使用Python开发,结合了多种技术实现考勤功能。要开发类似的基于人脸识别的考勤系统,可参考以下步骤: 环境搭建:利用Anaconda创建虚拟环境,指定Python版本为3.8&am…...

开启 AI 学习之旅:从入门到精通

最近 AI 真的超火,不管是工作还是生活里,到处都能看到它的身影。好多小伙伴都跑来问我,到底该怎么学 AI 呢?今天我就把自己学习 AI 的经验和心得分享出来,希望能帮到想踏入 AI 领域的朋友们! 一、学习内容有哪些 (一)编程语言 Python 绝对是首选!它在 AI 领域的生态…...

13 尺寸结构模块(size.rs)

一、size.rs源码 // Copyright 2013 The Servo Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE…...

16.[前端开发]Day16-HTML+CSS阶段练习(网易云音乐五)

完整代码 网易云-main-left-rank&#xff08;排行榜&#xff09; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name&q…...

ARM嵌入式学习--第十天(UART)

--UART介绍 UART(Universal Asynchonous Receiver and Transmitter)通用异步接收器&#xff0c;是一种通用串行数据总线&#xff0c;用于异步通信。该总线双向通信&#xff0c;可以实现全双工传输和接收。在嵌入式设计中&#xff0c;UART用来与PC进行通信&#xff0c;包括与监控…...

MoonBit 编译器(留档学习)

MoonBit 编译器 MoonBit 是一个用户友好&#xff0c;构建快&#xff0c;产出质量高的编程语言。 MoonBit | Documentation | Tour | Core This is the source code repository for MoonBit, a programming language that is user-friendly, builds fast, and produces high q…...

【TypeScript】基础:数据类型

文章目录 TypeScript一、简介二、类型声明三、数据类型anyunknownnervervoidobjecttupleenumType一些特殊情况 TypeScript 是JavaScript的超集&#xff0c;代码量比JavaScript复杂、繁多&#xff1b;但是结构更清晰 一、简介 为什么需要TypeScript&#xff1f; JavaScript的…...

Unity游戏(Assault空对地打击)开发(3) 摄像机的控制

详细步骤 打开My Assets或者Package Manager。 选择Unity Registry。 搜索Cinemachine&#xff0c;找到 Cinemachine包&#xff0c;点击 Install按钮进行安装。 关闭窗口&#xff0c;新建一个FreeLook Camera&#xff0c;如下。 接着新建一个对象Pos&#xff0c;拖到Player下面…...

【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)

目录 1 -> 生命周期 1.1 -> 应用生命周期 1.2 -> 页面生命周期 2 -> 资源限定与访问 2.1 -> 资源限定词 2.2 -> 资源限定词的命名要求 2.3 -> 限定词与设备状态的匹配规则 2.4 -> 引用JS模块内resources资源 3 -> 多语言支持 3.1 -> 定…...

小程序-基础加强-自定义组件

前言 这次讲自定义组件 1. 准备今天要用到的项目 2. 初步创建并使用自定义组件 这样就成功在home中引入了test组件 在json中引用了这个组件才能用这个组件 现在我们来实现全局引用组件 在app.json这样使用就可以了 3. 自定义组件的样式 发现页面里面的文本和组件里面的文…...

尝试ai生成figma设计

当听到用ai 自动生成figma设计时&#xff0c;不免好奇这个是如何实现的。在查阅了不少资料后&#xff0c;有了一些想法。参考了&#xff1a;在figma上使用脚本自动生成色谱 这篇文章提供的主要思路是&#xff1a;可以通过脚本的方式构建figma设计。如果我们使用ai 生成figma脚本…...

【周易哲学】生辰八字入门讲解(八)

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解【周易哲学】生辰八字入门讲解&#xff0c;期待与你一同探索、学习、进步&#xff0c;一起卷起来叭&#xff01; 目录 一、六亲女命六亲星六亲宫位相互关系 男命六亲星…...

康德哲学与自组织思想的渊源:从《判断力批判》到系统论的桥梁

康德哲学与自组织思想的渊源&#xff1a;从《判断力批判》到系统论的桥梁 第一节&#xff1a;康德哲学中的自然目的论与自组织思想 核心内容&#xff1a; 康德哲学中的自然目的论和反思判断力概念&#xff0c;为现代系统论中的自组织思想提供了哲学基础&#xff0c;预见了复…...