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

nginx参数介绍(Nginx配置文件结构、nginx命令)

文章目录

  • 一、Nginx 配置文件结构
    • 1. **全局块(Main Context)**
      • - **作用**:配置影响整个 Nginx 进程的参数。
      • - **常见参数**:
    • 2. **Events 块**
      • - **作用**:配置与网络连接相关的参数,影响 Nginx 处理客户端请求的性能。
      • - **常见参数**:
    • 3. **HTTP 块**
      • - **作用**:定义 HTTP 服务的全局配置,包含多个 `server` 块(虚拟主机)。
      • - **常见参数**:
    • 4. **Server 块(虚拟主机)**
      • - **作用**:定义单个网站的监听端口、域名、路由规则等。
      • - **示例**:
    • 5. **Location 块**
      • - **作用**:定义针对不同 URL 路径的请求处理规则。
      • - **常见参数**:
  • 二、常用配置参数详解
    • 1. **基本参数**
      • - `worker_processes`:设置工作进程数,通常设置为 CPU 核心数。
      • - `worker_connections`:每个工作进程的最大连接数,与 `worker_processes` 共同决定并发能力。
      • - `keepalive_timeout`:客户端长连接的超时时间(单位秒),默认 75 秒。
      • - `client_max_body_size`:限制客户端请求体大小(用于文件上传),默认 1MB。
    • 2. **日志相关参数**
      • - `access_log`:定义访问日志路径及格式,例如:
      • - `error_log`:定义错误日志路径及级别(`debug`, `info`, `notice`, `warn`, `error`, `crit`)。
    • 3. **性能优化参数**
      • - `sendfile on;`:启用高效文件传输模式(减少系统调用)。
      • - `tcp_nopush on;`:合并小数据包,减少网络传输次数。
      • - `tcp_nodelay on;`:禁用 Nagle 算法,提高实时性。
      • - `gzip on;`:启用 Gzip 压缩,减少传输体积。
    • 4. **反向代理参数**
      • - `proxy_pass`:将请求转发到后端服务器:(proxy_set_header)
    • 5. **负载均衡参数**
      • - `upstream`:定义后端服务器集群:
    • 6. **安全相关参数**
      • - `allow` / `deny`:限制访问的 IP 地址:
      • - `auth_basic`:启用 HTTP 基本身份验证:
    • 7. **缓存相关参数**
      • - `proxy_cache`:启用反向代理缓存:(proxy_cache_path、keys_zone、max_size、proxy_cache_valid)
  • 三、高级配置示例
    • 1. **静态文件服务**
    • 2. **HTTPS 配置**(listen、server_name、ssl_certificate、ssl_certificate_key)
    • 3. **限制访问频率**(limit_req_zone、limit_req、burst)
  • 四、配置调试与测试
    • 1. **检查配置语法**:
    • 2. **重新加载配置**:
    • 3. **查看运行状态**:
  • 五、总结
    • - **静态资源服务**:通过 `root` 和 `alias` 配置。
    • - **反向代理**:使用 `proxy_pass` 转发请求。
    • - **负载均衡**:通过 `upstream` 定义后端集群。
    • - **安全防护**:限制 IP、启用身份验证。
    • - **性能优化**:调整连接数、启用缓存和压缩。

Nginx 是一款高性能的 Web 服务器和反向代理服务器,其配置灵活且功能强大。以下是关于 Nginx 配置方法常用参数 的详细介绍,结合常见场景和示例代码帮助理解。


一、Nginx 配置文件结构

Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf,其结构分为多个块(block),每个块定义不同的配置作用域。

1. 全局块(Main Context)

- 作用:配置影响整个 Nginx 进程的参数。

- 常见参数

user nginx;  # 运行 Nginx 的用户和组
worker_processes auto;  # 工作进程数(通常设为 CPU 核心数)
error_log /var/log/nginx/error.log warn;  # 错误日志路径及级别
pid /var/run/nginx.pid;  # 存储 Nginx 进程 ID 的文件

2. Events 块

- 作用:配置与网络连接相关的参数,影响 Nginx 处理客户端请求的性能。

- 常见参数

events {worker_connections 1024;  # 每个工作进程的最大并发连接数use epoll;  # 使用高效的事件模型(Linux 推荐 epoll)
}

3. HTTP 块

- 作用:定义 HTTP 服务的全局配置,包含多个 server 块(虚拟主机)。

- 常见参数

http {include /etc/nginx/mime.types;  # 包含 MIME 类型定义文件default_type application/octet-stream;  # 默认响应类型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;  # 启用高效文件传输模式keepalive_timeout 65;  # 客户端长连接超时时间include /etc/nginx/conf.d/*.conf;  # 包含其他子配置文件
}

4. Server 块(虚拟主机)

- 作用:定义单个网站的监听端口、域名、路由规则等。

- 示例

server {listen 80;  # 监听端口server_name example.com;  # 域名或 IPlocation / {root /usr/share/nginx/html;  # 静态资源根目录index index.html index.htm;  # 默认首页}error_page 500 502 503 504 /50x.html;  # 错误页面配置location = /50x.html {root /usr/share/nginx/html;}
}

5. Location 块

- 作用:定义针对不同 URL 路径的请求处理规则。

- 常见参数

location /static/ {alias /data/static/;  # 路径映射(末尾必须加 /)expires 30d;  # 设置缓存过期时间access_log off;  # 关闭访问日志
}

二、常用配置参数详解

1. 基本参数

- worker_processes:设置工作进程数,通常设置为 CPU 核心数。

- worker_connections:每个工作进程的最大连接数,与 worker_processes 共同决定并发能力。

- keepalive_timeout:客户端长连接的超时时间(单位秒),默认 75 秒。

- client_max_body_size:限制客户端请求体大小(用于文件上传),默认 1MB。

2. 日志相关参数

- access_log:定义访问日志路径及格式,例如:

access_log /var/log/nginx/access.log main;

- error_log:定义错误日志路径及级别(debug, info, notice, warn, error, crit)。

3. 性能优化参数

- sendfile on;:启用高效文件传输模式(减少系统调用)。

- tcp_nopush on;:合并小数据包,减少网络传输次数。

- tcp_nodelay on;:禁用 Nagle 算法,提高实时性。

- gzip on;:启用 Gzip 压缩,减少传输体积。

4. 反向代理参数

- proxy_pass:将请求转发到后端服务器:(proxy_set_header)

location /api/ {proxy_pass http://backend_server;  # 转发到后端服务器proxy_set_header Host $host;  # 传递原始请求头proxy_set_header X-Real-IP $remote_addr;  # 传递客户端真实 IP
}

5. 负载均衡参数

- upstream:定义后端服务器集群:

upstream backend {server 10.0.0.1:8080 weight=3;  # 权重为 3server 10.0.0.2:8080;server 10.0.0.3:8080 backup;  # 备用服务器
}server {location / {proxy_pass http://backend;  # 转发到负载均衡集群}
}

6. 安全相关参数

- allow / deny:限制访问的 IP 地址:

location /admin/ {allow 192.168.1.0/24;  # 允许特定网段访问deny all;  # 拒绝其他所有请求
}

- auth_basic:启用 HTTP 基本身份验证:

location /private/ {auth_basic "Restricted Area";auth_basic_user_file /etc/nginx/.htpasswd;  # 用户密码文件路径
}

7. 缓存相关参数

- proxy_cache:启用反向代理缓存:(proxy_cache_path、keys_zone、max_size、proxy_cache_valid)

http {proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g;server {location / {proxy_pass http://backend;proxy_cache my_cache;  # 启用名为 my_cache 的缓存proxy_cache_valid 200 302 10m;  # 缓存 200/302 响应 10 分钟proxy_cache_valid 404 1m;  # 缓存 404 响应 1 分钟}}
}

三、高级配置示例

1. 静态文件服务

location /static/ {alias /data/static/;  # 映射到本地目录expires 30d;  # 浏览器缓存 30 天add_header Cache-Control public;  # 设置缓存策略
}

2. HTTPS 配置(listen、server_name、ssl_certificate、ssl_certificate_key)

server {listen 443 ssl;server_name example.com;ssl_certificate /etc/nginx/ssl/example.com.crt;  # SSL 证书路径ssl_certificate_key /etc/nginx/ssl/example.com.key;  # 私钥路径location / {root /usr/share/nginx/html;index index.html;}
}

3. 限制访问频率(limit_req_zone、limit_req、burst)

http {limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;  # 限制每秒 1 次请求server {location /api/ {limit_req zone=mylimit burst=5 nodelay;  # 允许突发 5 次请求proxy_pass http://backend;}}
}

四、配置调试与测试

1. 检查配置语法

nginx -t  # 检查配置文件语法是否正确

2. 重新加载配置

nginx -s reload  # 不中断服务的情况下重新加载配置

3. 查看运行状态

ps aux | grep nginx  # 查看 Nginx 进程
netstat -tuln | grep nginx  # 查看监听端口

五、总结

Nginx 的配置需要根据具体业务需求调整,常见场景包括:

- 静态资源服务:通过 rootalias 配置。

- 反向代理:使用 proxy_pass 转发请求。

- 负载均衡:通过 upstream 定义后端集群。

- 安全防护:限制 IP、启用身份验证。

- 性能优化:调整连接数、启用缓存和压缩。

通过合理配置这些参数,可以显著提升 Nginx 的性能和可靠性。


文章转载自:

http://gtPDrLz5.nnttr.cn
http://0Clidcg4.nnttr.cn
http://CL7VODHC.nnttr.cn
http://KFty4RoE.nnttr.cn
http://1m6HKB0x.nnttr.cn
http://odZqCT9v.nnttr.cn
http://DtfJ51lJ.nnttr.cn
http://NfabzeDi.nnttr.cn
http://bDL3m9Zx.nnttr.cn
http://cEpsmpSj.nnttr.cn
http://WC4BNgbN.nnttr.cn
http://gdzyS1Ow.nnttr.cn
http://9LuXto35.nnttr.cn
http://yhOwec8e.nnttr.cn
http://GBk1NvP1.nnttr.cn
http://Ff06atCg.nnttr.cn
http://sM2FIpfC.nnttr.cn
http://bNex5x9W.nnttr.cn
http://SVHCXk4a.nnttr.cn
http://8CJLxz44.nnttr.cn
http://24S4BNK1.nnttr.cn
http://xk9JeSec.nnttr.cn
http://6BMnJWCu.nnttr.cn
http://qlRZhrIj.nnttr.cn
http://oTLHsLVa.nnttr.cn
http://biL2i96P.nnttr.cn
http://4aDtloie.nnttr.cn
http://ZyXyGf3p.nnttr.cn
http://1sR9rrDw.nnttr.cn
http://dk5F0idY.nnttr.cn
http://www.dtcms.com/a/378872.html

相关文章:

  • Java mp4parser 实现视频mp4 切割
  • 安卓13_ROM修改定制化-----系统升级(OTA 更新)后保留 Magisk 的 root 权限和相关功能
  • Codebuddy Code CLI 实战体验:从安装到生成俄罗斯方块小游戏
  • 【代码随想录day 24】 力扣 90. 集合II
  • [iOS] 属性关键字
  • MVC及其衍生
  • 前端开发为什么要禁止使用 == 操作符?
  • langchain4j入门(跟随官网学习)第一章
  • ASSIGN (LV_NAME) TO <FS_NAME>. 通过变量名动态访问变量
  • 二、WPF——Style样式玩法(通过资源字典将Style独立,全局调用)
  • 基于Hadoop进程的分布式计算任务调度与优化实践——深入理解分布式计算引擎的核心机制
  • 用工招聘小程序:功能版块与前端设计解析
  • Golang高效JSON处理:easyjson性能提升6倍
  • Golang语言入门之数组、切片与子切片
  • Go 死锁全解析:4个条件+5个场景+6个解决方案
  • Go语言快速入门教程(JAVA转go)——1 概述
  • 【leetcode】139. 单词拆分
  • 使用yocto工具链交叉编译lsof命令
  • vue项目的main.js规划设计与合理使用
  • FPGA入门-无源蜂鸣器驱动
  • 使用Langchain生成本地rag知识库并搭载大模型
  • [第一章] web入门—N1book靶场详细思路讲解
  • uniapp 文件查找失败:main.js
  • 第7篇、Kafka Streams 与 Connect:企业级实时数据处理架构实践指南
  • Linux redis 8.2.1源码编译
  • logging 模块升级版 loguru
  • 【Flask】实现一个前后端一体的项目-脚手架
  • 小说阅读系统Java源码 小说阅读软件开发 小说app小程序
  • 如何在 Debian 12 上安装 MySQL
  • GA-PNN: 基于遗传算法的光子神经网络硬件配置方法(未做完)