在Linux中,Nginx的常用模块有哪些?

news/2025/3/20 22:59:51/文章来源:https://www.cnblogs.com/huangjiabobk/p/18784159

在 Linux 中,Nginx 提供了丰富的模块来实现各种功能,这些模块可以分为核心模块、HTTP 模块、Stream 模块、Mail 模块以及第三方模块。以下是一些常用的 Nginx 模块及其功能的详细介绍:

1. 核心模块(Core Modules)

核心模块是 Nginx 的基础模块,提供了基本的配置和运行机制。

ngx_core_module
  • 功能:提供 Nginx 的基本配置功能,包括错误日志、进程管理、工作模式等。

  • 配置示例

    worker_processes auto;  # 根据 CPU 核心数自动分配工作进程
    error_log /var/log/nginx/error.log;  # 错误日志路径
    
ngx_events_module
  • 功能:管理 Nginx 的事件处理机制,支持多种高效的事件通知机制(如 epollkqueue)。

  • 配置示例

    events {worker_connections 1024;  # 每个工作进程的最大连接数use epoll;  # 使用 epoll 事件驱动机制(Linux 系统推荐)
    }
    
2. HTTP 模块(HTTP Modules)

HTTP 模块是 Nginx 作为 Web 服务器的核心功能模块,提供了 HTTP 协议的处理能力。

ngx_http_core_module
  • 功能:提供 HTTP 协议支持,包括 httpserverlocation 等配置段。

  • 配置示例

    http {server {listen 80;server_name example.com;location / {root /var/www/html;index index.html;}}
    }
    
ngx_http_access_module
  • 功能:基于 IP 地址进行访问控制,可以允许或拒绝特定 IP 地址访问。

  • 配置示例

    server {listen 80;location / {allow 192.168.1.0/24;  # 允许 192.168.1.0/24 网段访问deny all;  # 拒绝其他所有 IP 地址}
    }
    
ngx_http_auth_basic_module
  • 功能:实现基于 HTTP 基本认证的用户访问控制。

  • 配置示例

    server {listen 80;location / {auth_basic "Restricted Area";auth_basic_user_file /etc/nginx/.htpasswd;  # 用户名和密码文件}
    }
    
ngx_http_proxy_module
  • 功能:实现 HTTP 和 HTTPS 的反向代理及负载均衡功能。

  • 配置示例

    upstream backend {server backend1.example.com;server backend2.example.com;
    }server {listen 80;location / {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
    }
    
ngx_http_fastcgi_module
  • 功能:与 FastCGI 进程交互,常用于处理 PHP 等脚本语言。

  • 配置示例

    server {listen 80;location ~ .php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
    }
    
ngx_http_rewrite_module
  • 功能:使用正则表达式更改请求的 URI,实现 URL 重写和重定向。

  • 配置示例

    server {listen 80;location / {rewrite ^/old/(.*)$ /new/$1 permanent;  # 永久重定向}
    }
    
ngx_http_ssl_module
  • 功能:提供 SSL/TLS 安全协议支持,用于 HTTPS 加密通信。

  • 配置示例

    server {listen 443 ssl;server_name example.com;ssl_certificate /etc/nginx/ssl/example.com.crt;ssl_certificate_key /etc/nginx/ssl/example.com.key;location / {root /var/www/html;index index.html;}
    }
    
ngx_http_gzip_module
  • 功能:对 HTTP 响应内容进行 Gzip 压缩,减少网络传输数据量。

  • 配置示例

    http {gzip on;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    }
    
ngx_http_stub_status_module
  • 功能:输出 Nginx 的基本状态信息,如当前连接数、请求处理状态等。

  • 配置示例

    server {listen 80;location /nginx_status {stub_status on;allow 127.0.0.1;  # 仅允许本地访问deny all;}
    }
    

ngx_http_log_module

  • 功能:定义日志格式和日志文件路径。

  • 配置示例

    http {log_format custom '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';server {access_log /var/log/nginx/access.log custom;}
    }
    
3. Stream 模块(Stream Modules)

Stream 模块用于处理第四层(传输层)的 TCP/UDP 连接,常用于邮件服务器的代理和负载均衡。

ngx_stream_core_module
  • 功能:提供基础的 TCP/UDP 代理功能。

  • 配置示例

    stream {upstream backend {server backend1.example.com:53;server backend2.example.com:53;}server {listen 53;proxy_pass backend;}
    }
    
ngx_stream_proxy_module
  • 功能:实现 TCP/UDP 代理和负载均衡。

  • 配置示例

    stream {upstream backend {server backend1.example.com:25;server backend2.example.com:25;}server {listen 25;proxy_pass backend;}
    }
    
4. Mail 模块(Mail Modules)

Mail 模块用于处理邮件协议相关的请求,如 SMTP、IMAP 和 POP3 服务。

ngx_mail_core_module
  • 功能:提供基础的邮件协议支持。

  • 配置示例

    mail {server_name mail.example.com;auth_http 127.0.0.1/auth.php;  # 认证请求的 HTTP 服务器protocol imap;server {listen 143;protocol imap;}
    }
    
5. 第三方模块(Third-party Modules)

第三方模块用于扩展 Nginx 的功能,满足特定业务需求。

ngx_http_lua_module
  • 功能:允许在 Nginx 配置中嵌入 Lua 脚本,进行复杂的逻辑处理。

  • 配置示例

    server {listen 80;location / {content_by_lua_block {ngx.say("Hello, Lua!")}}
    }
    
ngx_http_vhost_traffic_status_module
  • 功能:提供详细的虚拟主机流量状态信息。

  • 配置示例

    http {vhost_traffic_status_zone;server {listen 80;server_name example.com;location /status {vhost_traffic_status_display;vhost_traffic_status_display_format html;}}
    }
    
6.我的总结

综上所述,Nginx 的模块化设计使其功能强大且灵活。常用模块涵盖了从基本的 Web 服务到复杂的负载均衡、安全加密、动态内容处理等场景。根据实际需求选择合适的模块并进行合理配置,可以充分发挥 Nginx 的性能优势。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【刷题笔记】力扣 40. 组合总和 II——回溯算法中的去重

40. 组合总和 II 中等 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: candidates = [10,1,2,7,6,1,…

Spring AI 搭建AI原生应用 [clone]

作者 | 文心智能体平台导读 本文以快速开发一个 AI 原生应用为目的,介绍了 Spring AI 的包括对话模型、提示词模板、Function Calling、结构化输出、图片生成、向量化、向量数据库等全部核心功能,并介绍了检索增强生成的技术。依赖 Spring AI 提供的功能,我们可以轻松开发出…

mybatis逆向工程插件配置(mybatis-generator-maven-plugin)

MyBatis逆向工程是一种自动化工具,可以将数据库表结构转换为MyBatis的Mapper XML文件和相应的Java接口和对应的实体类。 1.生成maven项目 2.pom.xml文件中导入逆向工程插件相关配置<!--mybatis逆向工程--><build><plugins><!--其中的一个插件,逆向工程插…

Day01-Java项目学习

Day01 后端环境搭建 lombok插件 通过lombok插件。@Data 可以使用@Data、@Getter、@Setter等注解的形式,来对一个Java Bean(具有Getter,Setter方法的对象)实现快速的初始化。 @Slf4j 可以以注解的形式,自动化日志变量,通过添加@Slf4j(simple logging Facade for Java)生成…

20241105 实验一 《Python程序设计》

课程:《Python程序设计》 班级: 2411 姓名: 王梓墨 学号:20241105 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 一.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试分析) 3.编写程序,练习变量和类型、字…

英语四级备考第二天

第二天 今天是开始英语备考的第二天,当迈出第二步的时候,就意味着正走在通过考试的路上。到时当你以425分毋庸置疑地通过考试时,过去的90天都不曾虚度。 单词 今天新学的单词加上昨天应复习的单词,在50~60个之间。阅读 今天的阅读还是用扇贝单词推荐的包含学习的单词的文章…

投资日记_道氏理论技术分析

主要用于我自己参考,我感觉我做事情的时候容易上头,忘掉很多事情。技术分析有很多方法,但是我个人相信并实践的还是以道氏理论为根本的方法。方法千千万万只有适合自己价值观,习惯,情绪,性格的方法才是好的方法。 趋势 趋势是技术分析的根本,要是连当前趋势都看不懂,最…

asp.net core webapi 完整Swagger配置

在当前项目下新建Utility文件夹,Utility文件夹下面在创建SwaggerExt文件夹,文档结果如下 CustomSwaggerExt.cs文件如下using Microsoft.Extensions.Options; using Microsoft.OpenApi.Models;namespace xxxxxxxxxx {/// <summary>/// 扩展Swagger/// </summary>pub…

ciscnccb半决赛

AWDP typo 一道2.31的堆题漏洞点位于edit功能,snprintf函数把用户输入作为format,导致了堆溢出以及格式化字符串漏洞fix 从程序的代码不难看出分配出来的堆,前面八个字节是堆的size,后面的空间才是数据域 这里原意是修改heap的size,但是用错了函数,我们修改最大读入的siz…

AI全天候智能助手,为您构建私人数据库

在数字化转型浪潮中,AI与大数据技术已成为企业提升效率、优化服务的核心引擎。思通数科凭借其自主研发的大数据智能系统,以AI为核心,打造了一站式解决方案,覆盖消费者服务、商家赋能与平台运营三大领域,助力用户与合作伙伴实现智能化升级。以下是该系统的核心功能与价值解…

安装 Prometheus监控主机服务

一、安装 Prometheus 下载 Prometheus 首先,访问 Prometheus 官网 获取最新版本的下载链接,然后使用 wget 下载:wget https://github.com/prometheus/prometheus/releases/download/v3.2.1/prometheus-3.2.1.linux-amd64.tar.gz解压并安装解压下载的文件:tar -xvzf prometh…