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

Nginx 的完整配置文件结构、配置语法以及模块详解

Nginx 配置文件结构

Nginx 的配置文件通常位于 /etc/nginx/nginx.conf 或安装目录下的 conf/nginx.conf 文件中。配置文件由多个块组成,每个块由一对大括号 {} 包裹,主要包含以下部分:

1. 主配置块

这是配置文件的最外层,包含全局指令,如:

user nginx;  # 指定运行 Nginx 的用户
worker_processes  auto;  # 指定工作进程数
error_log /var/log/nginx/error.log;  # 错误日志位置
pid /var/run/nginx.pid;  # PID 文件位置
2. events 块

用于配置与事件相关的指令,主要影响 Nginx 的网络连接处理:

events {worker_connections 1024;  # 每个工作进程的最大连接数use epoll;  # 指定使用的事件驱动模型
}
3. http 块

包含所有与 HTTP 服务器相关的配置,如:

http {include /etc/nginx/mime.types;  # 包含 MIME 类型定义default_type application/octet-stream;  # 默认 MIME 类型log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';  # 自定义日志格式access_log /var/log/nginx/access.log main;  # 访问日志位置和格式sendfile on;  # 开启 sendfile 优化keepalive_timeout 65;  # 保持连接的超时时间include /etc/nginx/conf.d/*.conf;  # 包含其他配置文件
}
4. server 块

定义一个虚拟主机的配置,可以有多个 server 块,每个块监听不同的端口或主机名:

server {listen 80;  # 监听的端口server_name example.com;  # 服务器名称location / {root /usr/share/nginx/html;  # 站点根目录index index.html index.htm;  # 默认索引文件}
}
5. location 块

用于匹配请求的 URI,并定义对该请求的处理方式:

location /images/ {autoindex on;  # 自动索引目录
}

Nginx 配置语法

Nginx 配置文件的语法由指令和参数组成,每条指令以分号 ; 结束。指令可以包含在块中,块由大括号 {} 包裹。指令的语法如下:

指令 参数1 参数2 ...;

Nginx 模块详解

Nginx 提供了多种模块来扩展其功能,以下是一些常见的模块及其用途:

1. ngx_http_core_module

核心模块,提供了基本的 HTTP 功能,如请求处理、响应生成等。

2. ngx_http_access_module

用于基于客户端 IP 地址的访问控制:

location / {allow 192.168.1.0/24;  # 允许特定 IP 段访问deny all;  # 禁止其他 IP 访问
}
3. ngx_http_proxy_module

用于反向代理,将请求转发到后端服务器:

location / {proxy_pass http://backend;  # 后端服务器地址proxy_set_header Host $host;  # 设置请求头
}
4. ngx_http_rewrite_module

用于基于正则表达式的 URL 重写:

location / {rewrite ^/old/(.*)$ /new/$1 permanent;  # 重写 URL
}
5. ngx_http_upstream_module

用于定义后端服务器组,便于负载均衡:

upstream backend {server backend1.example.com;server backend2.example.com;
}
6. ngx_http_log_module

用于日志记录,可以自定义日志格式:

log_format custom '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent"';
access_log /var/log/nginx/access.log custom;
7. ngx_http_ssl_module

用于支持 HTTPS,提供 SSL/TLS 加密:

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;
}
8. ngx_http_gzip_module

用于压缩响应内容,减少传输大小:

gzip on;
gzip_types text/plain text/css application/json;

这些模块和配置指令可以组合使用,以满足各种复杂的服务器配置需求。

http://www.dtcms.com/a/341331.html

相关文章:

  • 鸿蒙语音播放模块设置为独立线程,保证播放流畅
  • 【clion】visual studio的sln转cmakelist并使用clion构建32位
  • HTML5 视频与音频完全指南:从基础的 <video> / <audio> 标签到现代 Web 媒体应用
  • Java 大视界 -- Java 大数据在智能医疗远程会诊数据管理与协同诊断优化中的应用(402)
  • Dify实现超长文档分割与大模型处理(流程简单,1.6版本亲测有效)
  • AI线索收集技术实战指南
  • 解决移植到别的地方的linux虚拟机系统不能的使用固定IP的桥接网络上网进行ssh连接
  • 单片机驱动继电器接口
  • JavaScript中的函数parseInt(string, radix)解析
  • 【java面试day16】mysql-覆盖索引
  • 三分钟速通SSH登录
  • 1.Shell脚本修炼手册之---为什么要学Shell编程?
  • MySQL高阶篇-数据库优化
  • [GraphRag]完全自动化处理任何文档为向量知识图谱:AbutionGraph如何让知识自动“活”起来?
  • ​​pytest+yaml+allure接口自动化测试框架
  • STM32F4 SDIO介绍及应用
  • DNS 深度解析:从域名导航到客户端访问全流程
  • AI 与加密监管思维的转变:从美联储谈到开发者视角
  • Cobbler 自动化部署服务介绍与部署指南
  • SpringBoot集成WebService
  • BioScientist Agent:用于药物重定位和作用机制解析的知识图谱增强型 LLM 生物医学代理技术报告
  • docker CI操作演示分享(第四期)
  • Fastdata极数:中国外卖行业趋势报告2025
  • 网络流量分析——基础知识
  • [特殊字符] 从文件到视频:日常数据修复全攻略
  • 奇怪的“bug”--数据库的“隐式转换”行为
  • Kafka如何保证消费确认与顺序消费?
  • Torch -- 卷积学习day4 -- 完整项目流程
  • python numpy.random的基础教程(附opencv 图片转数组、数组转图片)
  • 3D max制作蝴蝶结详细步骤(新手可跟)♥️