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 的配置需要根据具体业务需求调整,常见场景包括:
- 静态资源服务:通过 root
和 alias
配置。
- 反向代理:使用 proxy_pass
转发请求。
- 负载均衡:通过 upstream
定义后端集群。
- 安全防护:限制 IP、启用身份验证。
- 性能优化:调整连接数、启用缓存和压缩。
通过合理配置这些参数,可以显著提升 Nginx 的性能和可靠性。