Nginx 配置文件详解(带示例)

news2025/1/4 6:14:46

摘要

Nginx(发音为“engine-x”)是一款高性能的 Web 服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中。Nginx 的强大功能和灵活性主要体现在其配置文件中。本文将详细介绍 Nginx 配置文件中各个关键字段的含义、使用方法,并通过详细的示例和清晰的注释帮助大家深入理解如何配置 Nginx 以满足不同的需求,包括静态资源服务、反向代理、负载均衡等常见场景。

一、Nginx 配置文件结构概述

Nginx 的配置文件通常位于 /etc/nginx/nginx.conf,其基本结构如下:

# 全局配置
events {
    # 事件驱动配置
}

http {
    # HTTP 服务器相关配置
    server {
        # 虚拟主机配置
        location / {
            # 请求处理配置
        }
    }
}
  • 全局配置:影响整个 Nginx 服务器的配置,如工作进程数、用户权限等。
  • events 块:配置处理连接的方式,如连接数限制、事件驱动模型等。
  • http 块:包含处理 HTTP 协议相关的配置,如服务器(server)配置、缓存策略等。
  • server 块:定义一个虚拟主机,可以配置监听端口、域名、SSL 等。
  • location 块:匹配特定的 URL 路径,并定义对应的处理方式,如静态文件服务、反向代理等。

下面将详细介绍各个字段及其使用。

二、全局配置(Global Configuration)

1. worker_processes

  • 说明:设置 Nginx 工作进程的数量。通常设置为与 CPU 核心数相同或根据服务器负载调整。

  • 示例:

    worker_processes auto; # 自动设置为 CPU 核心数
    

2. worker_connections

  • 说明:设置每个工作进程的最大连接数。

  • 示例:

    events {
        worker_connections 1024; # 每个工作进程最多处理 1024 个连接
    }
    

3. error_log

  • 说明:设置错误日志的路径和级别。

  • 示例:

    error_log /var/log/nginx/error.log warn; # 错误日志级别为 warn
    

4. pid

  • 说明:设置 Nginx 主进程的进程 ID 文件路径。

  • 示例:

    pid /var/run/nginx.pid;
    

三、events 块配置

1. use

  • 说明:指定使用的事件驱动模型,如 epoll(适用于 Linux)、select 等。

  • 示例:

    events {
        use epoll; # 使用 epoll 事件驱动模型
    }
    

2. accept_mutex

  • 说明:是否启用互斥锁,用于负载均衡连接处理。

  • 示例:

    events {
        accept_mutex on; # 启用互斥锁
    }
    

四、http 块配置

1. include

  • 说明:包含其他配置文件,便于模块化管理。

  • 示例:

    http {
        include       mime.types;
        include /etc/nginx/conf.d/*.conf;
    }
    

2. default_type

  • 说明:设置默认的 MIME 类型。

  • 示例:

    http {
        default_type application/octet-stream;
    }
    

3. log_format

  • 说明:定义日志格式。

  • 示例:

    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    }
    

4. access_log

  • 说明:设置访问日志的路径和格式。

  • 示例:

    http {
        access_log  /var/log/nginx/access.log  main;
    }
    

5. sendfile

  • 说明:是否启用 sendfile() 系统调用,用于高效传输文件。

  • 示例:

    http {
        sendfile on;
    }
    

6. tcp_nopush

  • 说明:是否启用 TCP_NOPUSH 或 TCP_CORK 选项,提高网络性能。

  • 示例:

    http {
        tcp_nopush on;
    }
    

7. keepalive_timeout

  • 说明:设置保持连接的超时时间。

  • 示例:

    http {
        keepalive_timeout 65; # 保持连接 65 秒
    }
    

8. types_hash_max_size

  • 说明:设置 MIME 类型哈希表的最大大小。

  • 示例:

    http {
        types_hash_max_size 2048;
    }
    

五、server 块配置

1. listen

  • 说明:设置服务器监听的端口。

  • 示例:

    server {
        listen 80; # 监听 80 端口
    }
    

2. server_name

  • 说明:设置服务器名称,可以是域名或 IP 地址。

  • 示例:

    server {
        server_name example.com www.example.com;
    }
    

3. root

  • 说明:设置请求的根目录,用于静态文件服务。

  • 示例:

    server {
        root /var/www/html;
    }
    

4. index

  • 说明:设置默认的首页文件。

  • 示例:

    server {
        index index.html index.htm;
    }
    

5. location

  • 说明:匹配特定的 URL 路径,并定义对应的处理方式。
示例 1:静态文件服务
server {
    listen 80;
    server_name example.com;
    root /var/www/html;

    location / {
        try_files $uri $uri/ =404;
    }
}
示例 2:反向代理
server {
    listen 80;
    server_name example.com;

    location /api/ {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
示例 3:负载均衡
upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

6. rewrite

  • 说明:重写 URL。

  • 示例:

    server {
        listen 80;
        server_name example.com;
    
        location /old-url {
            rewrite ^/old-url(.*)$ /new-url$1 permanent;
        }
    }
    

7. return

  • 说明:直接返回状态码和重定向地址。

  • 示例:

    server {
        listen 80;
        server_name example.com;
    
        location / {
            return 301 https://www.example.com$request_uri;
        }
    }
    

六、location 块详细配置

1. try_files

  • 说明:尝试查找指定路径的文件,如果不存在则返回指定的状态码。

  • 示例:

    location / {
        try_files $uri $uri/ /index.html;
    }
    

2. aliasroot

  • 说明aliasroot 都可以用于指定文件路径,但区别在于 alias 是替换匹配的,而 root 是附加在匹配的后面。

  • 示例:

    location /images/ {
        alias /var/www/images/;
    }
    
    location /static/ {
        root /var/www/;
    }
    
    • 对于 /images/logo.png,实际路径为 /var/www/images/logo.png
    • 对于 /static/css/style.css,实际路径为 /var/www/static/css/style.css

3. proxy_pass

  • 说明:将请求反向代理到另一个服务器。

  • 示例:

    location /api/ {
        proxy_pass http://backend_server;
    }
    

4. proxy_set_header

  • 说明:设置代理请求的头部信息。

  • 示例:

    location /api/ {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    

5. expires

  • 说明:设置 HTTP 缓存过期时间。

  • 示例:

    location /static/ {
        expires 30d; # 缓存 30 天
    }
    

七、总结

Nginx 的配置文件是一个强大的工具,通过合理配置各个字段,可以实现从简单的静态资源服务到复杂的反向代理和负载均衡等多种功能。本文详细介绍了 Nginx 配置文件中各个关键字段的含义、使用方法和示例,包括全局配置、events 块配置、http 块配置、server 块配置以及 location 块配置。通过掌握这些配置方法,大家可以灵活地根据实际需求调整 Nginx 的行为,充分发挥其高性能和灵活性。

在配置 Nginx 时,需要注意以下几点:

1.安全性:确保配置文件中的路径、权限等设置合理,避免潜在的安全漏洞。

2.性能优化:合理设置工作进程数、连接数等参数,根据服务器资源和负载情况进行调整。

3.模块化配置:使用 include 指令将配置文件模块化,便于维护和管理。

4.日志管理:合理配置日志路径和级别,方便监控和分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2269032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

按照乘法分解10点结构

在行列可自由变换的平面上9点结构有1430个,10点结构有3908个。其中可被分解为2*5的有102个, 5a1*2a110a28 5a1*2a210a689 5a1*2a310a1722 5a2*2a110a172 5a2*2a210a1081 5a2*2a310a2006 5a3*2a110a275 5a3*2a210a1561 5a3*2a310a2381 5a4*2a110…

JVM实战—6.频繁YGC和频繁FGC的后果

大纲 1.JVM GC导致系统突然卡死无法访问 2.什么是Young GC什么是Full GC 3.Young GC、Old GC和Full GC的发生情况 4.频繁YGC的案例(G1解决大内存YGC过慢) 5.频繁FGC的案例(YGC存活对象S区放不下) 6.问题汇总 1.JVM GC导致系统突然卡死无法访问 (1)基于JVM运行的系统最怕…

word运行时错误‘-2147221164(80040154)’ 没有注册类的解决办法

目录 问题描述解决方案 问题描述 解决方案 打开C盘找到路径C:\Users\Administrator\AppData\Roaming\Microsoft\Word\STARTUP或者在everything中搜索“Microsoft\Word\STARTUP”删除NEWebWordAddin.dotm文件即可正确打开word。

微服务保护—Sentinel快速入门+微服务整合 示例: 黑马商城

1.微服务保护 微服务保护是确保微服务架构可靠、稳定和安全的策略与技术。 在可靠性上,限流是控制进入微服务的请求数量,防止流量过大导致服务崩溃。比如电商促销时对商品详情服务进行流量限制。熔断是当被调用的微服务故障过多或响应过慢时,…

屏幕时序参数详解

屏幕时序参数详解 作者:(Witheart)更新时间:20241231 本文详细介绍了屏幕显示时序的基本参数,包括水平和垂直方向的有效像素、同步信号、前肩、后肩及其总周期的定义与计算公式。同时,通过公式和图示&…

2024年RAG:回顾与展望

2024年,RAG(Retrieval-Augmented Generation)技术经历了从狂热到理性的蜕变,成为大模型应用领域不可忽视的关键力量。年初,AI的“无所不能”让市场充满乐观情绪,RAG被视为解决复杂问题的万能钥匙&#xff1…

webpack01

webpack是一个前端工程化的打包工具 webpack在打包的时候,会形成一个依赖关系图,关联要打包的模块,,,不同的模块通过不同的loader去解析,,,比如解析css使用 css-loader,解析js使用b…

牛客网最新1129道 Java 面试题及答案整理

前言 面试,跳槽,每天都在发生,而对程序员来说"金三银四"更是面试和跳槽的高峰期,跳槽,更是很常见的,对于每个人来说,跳槽的意义也各不相同,可能是一个人更向往一个更大的…

python版本的Selenium的下载及chrome环境搭建和简单使用

针对Python版本的Selenium下载及Chrome环境搭建和使用,以下将详细阐述具体步骤: 一、Python版本的Selenium下载 安装Python环境: 确保系统上已经安装了Python 3.8及以上版本。可以从[Python官方网站]下载并安装最新版本的Python,…

突破管理困局,驾驭变革浪潮

在瞬息万变的商业环境中,变革已成为企业生存和发展的必经之路。许多企业在面对激烈竞争、技术进步和市场变化时,都会选择或被迫进行各种形式的变革。本文将深入探讨变革管理的重要性,介绍常见的变革模型,并提供实用的策略和建议&a…

WPF编程excel表格操作

WPF编程excel表格操作 摘要NPOI安装封装代码测试代码 摘要 Excel操作几种方式 使用开源库NPOI(常用,操作丰富)使用Microsoft.Office.Interop.Excel COM组件(兼容性问题)使用OpenXml(效率高)使用OleDb(过时) NPOI安装 封装代码 using System; using System.IO; u…

【论文阅读笔记】SCI算法与代码 | 低照度图像增强 | 2022.4.21

目录 一 SCI 1 SCI网络结构 核心代码(model.py) 2 SCI损失函数 核心代码(loss.py) 3 实验 二 SCI效果 1 下载代码 2 运行 一 SCI 💜论文题目:Toward Fast, Flexible, and Robust Low-Light Image …

wps透视数据表

1、操作 首先选中你要的行字段表格 -> 插入 -> 透视数据表 -> 拖动行值(部门)到下方,拖动值(包裹数量、运费)到下方 2、删除 选中整个透视数据表 -> delete 如图:

STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计

SMEC88ST SDK开发包下载 目前市场上很多嵌入式产品方案都是可以破解复制的,主要是因为方案主芯片不具备防破解的功能,这就导致开发者投入大量精力、财力开发的新产品一上市就被别人复制,到市场上的只能以价格竞争,最后工厂复制的产…

【电路理论四】正弦电流电路

正弦电流 正弦量是随时间按正弦规律变动的电路变量。 随时间按正弦规律变动的电流称为正弦电流。 正弦电流的瞬时值表达式: 称为正弦电流的三要素。 分别为振幅/幅值,角频率,初相。 幅值为正弦电流的最大值,恒为正。 为正弦电…

多模态论文笔记——Coca(副)

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍多模态模型Coca,在DALLE 3中使用其作为captioner基准模型的原因和优势。 文章目录 ALBEF论文模型结构组成训练目标 CoCa​论文模型结构CoCa…

【Python系列】处理空请求体Body

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【毕业设计选题】目标检测方向毕业设计选题推荐 2025

目录 前言 毕设选题 开题指导建议 更多精选选题 选题帮助 最后 前言 大家好,这里是海浪学长毕设专题! 大四是整个大学期间最忙碌的时光,一边要忙着准备考研、考公、考教资或者实习为毕业后面临的升学就业做准备,一边要为毕业设计耗费大量精力。学长给大家整…

从2024看2025前端发展趋势

前言 又至年关,回顾整个2024年,前端行业仍旧百废待兴,IT业界同样也未见有所起色,AI风潮也从狂热兴奋逐步走向了冷静稳定阶段,造成此形势感观并非单一行业或者某一企业之特例,实为政经等综合影响之结果。因…

QT----------常用界面组件的使用

一、QComboBox 类 主要功能&#xff1a;提供一个下拉列表&#xff0c;用户可以从中选择一个或多个选项。 #include <QApplication> #include <QComboBox> #include <QVBoxLayout> #include <QWidget> #include <QMessageBox>int main(int argc…