news 2026/6/10 2:15:33

Nginx 配置示例及核心模块详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nginx 配置示例及核心模块详解

Nginx 配置详解

一、配置文件结构

# 全局块(主配置) main # 事件块 events { ... } # HTTP 块 http { # HTTP 全局配置 ... # 虚拟主机块(一个或多个) server { # 服务器配置 ... # 位置块(一个或多个) location { ... } } # 可包含其他配置文件 include /etc/nginx/conf.d/*.conf; }

二、核心模块详解

1. 全局配置(main context)
user nginx nginx; # 运行用户和组 worker_processes auto; # 工作进程数(auto = CPU核心数) error_log /var/log/nginx/error.log warn; # 错误日志 pid /var/run/nginx.pid; # PID文件 worker_rlimit_nofile 65535; # 文件描述符限制
2. 事件模块(events context)
events { worker_connections 1024; # 每个worker最大连接数 use epoll; # 事件驱动模型(Linux) multi_accept on; # 同时接受多个连接 accept_mutex off; # 连接互斥锁 }
3. HTTP模块(http context)

基础配置:

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; # 高效文件传输 tcp_nopush on; # TCP优化 tcp_nodelay on; # 禁用Nagle算法 keepalive_timeout 65; # 长连接超时 client_max_body_size 20m; # 最大上传文件大小 # Gzip压缩 gzip on; gzip_comp_level 6; gzip_types text/plain text/css application/json; # 上游服务器(负载均衡) upstream backend { server 192.168.1.100:8080 weight=3; server 192.168.1.101:8080; server 192.168.1.102:8080 backup; # 负载均衡策略:轮询(默认)、ip_hash、least_conn } }
4. 虚拟主机(server context)
server { listen 80; # 监听端口 listen [::]:80 ipv6only=on; # IPv6 server_name example.com www.example.com; # 域名 # 根目录和索引 root /var/www/html; index index.html index.htm index.php; # 字符集 charset utf-8; # SSL配置(HTTPS) listen 443 ssl http2; ssl_certificate /etc/ssl/cert.pem; ssl_certificate_key /etc/ssl/key.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; # 重定向HTTP到HTTPS if ($scheme != "https") { return 301 https://$host$request_uri; } # 安全头 add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; }
5. 位置块(location context)
location / { # 匹配所有请求 try_files $uri $uri/ /index.php?$query_string; } # 精确匹配(=) location = /api { # 仅匹配 /api } # 正则匹配(~ 区分大小写,~* 不区分) location ~ \.(jpg|png|gif)$ { expires 30d; # 缓存控制 add_header Cache-Control "public, immutable"; } # 前缀匹配(^~) location ^~ /static/ { # 匹配 /static/ 开头的URI alias /var/www/static/; } # API代理 location /api/ { 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; # 超时设置 proxy_connect_timeout 30s; proxy_read_timeout 30s; proxy_send_timeout 30s; } # PHP处理 location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

三、高级配置示例

1. 负载均衡
upstream app_cluster { least_conn; # 最少连接数 server app1.example.com:8080 max_fails=3 fail_timeout=30s; server app2.example.com:8080; server app3.example.com:8080 down; # 临时下线 keepalive 32; # 连接池 }
2. 缓存代理
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g; location / { proxy_cache my_cache; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_cache_use_stale error timeout updating; }
3. 限流
# 限制连接数 limit_conn_zone $binary_remote_addr zone=perip:10m; # 限制请求速率 limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s; location /api/ { limit_conn perip 10; # 每个IP最多10个连接 limit_req zone=perip burst=20 nodelay; # 令牌桶算法 }
4. 反向代理WebSocket
location /ws/ { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }

四、配置最佳实践

  1. 安全配置:
# 隐藏Nginx版本号 server_tokens off; # 限制请求方法 if ($request_method !~ ^(GET|POST|HEAD)$) { return 405; } # 防止目录遍历 autoindex off; # 禁用不需要的HTTP方法 location / { limit_except GET POST { deny all; } }
  1. 性能优化:
# 文件缓存 open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; # 缓冲优化 proxy_buffers 8 16k; proxy_buffer_size 32k; client_body_buffer_size 128k; # TCP优化 sendfile_max_chunk 512k;
  1. 日志管理:
# 按天分割日志(在crontab中配置) access_log /var/log/nginx/access-$(date +%Y%m%d).log; # 排除静态文件日志 location ~* \.(jpg|css|js)$ { access_log off; log_not_found off; }

五、调试和测试

# 检查配置语法nginx -t# 测试配置并显示解析结果nginx -T# 重新加载配置(不中断服务)nginx -s reload# 调试特定问题error_log /var/log/nginx/error.log debug;

六、常用变量

$remote_addr # 客户端IP $http_host # 请求主机头 $request_uri # 完整请求URI $args # 查询参数 $scheme # 协议(http/https) $server_name # 服务器名 $content_length # 请求体长度 $http_user_agent # 用户代理 $status # 响应状态码

七、配置组织建议

/etc/nginx/ ├── nginx.conf # 主配置文件 ├── conf.d/ # 通用配置片段 │ ├── gzip.conf │ ├── security.conf │ └── proxy.conf ├── sites-available/ # 可用站点配置 │ └── example.com.conf ├── sites-enabled/ # 启用的站点(符号链接) │ └── example.com.conf -> ../sites-available/example.com.conf └── snippets/ # 可复用配置块 └── ssl-params.conf
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 20:08:37

短剧开发必知:版权检测技术与内容安全合规方案

温馨提示:文末有资源获取方式哦~一、短剧的开发背景短剧的火爆并非偶然,它满足了当下人们快节奏生活中对于碎片化娱乐的需求。与传统长剧相比,短剧单集时长较短,一般在几分钟甚至更短,剧情紧凑,节奏明快&am…

作者头像 李华
网站建设 2026/6/9 21:05:24

django+vue3基于Python的学生宿舍故障报修系统

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着高校规模的扩大和学生人数的增加,学生宿舍设施故障报修管理面临效率低下、流程繁琐等问题。传统报修方式依赖人…

作者头像 李华
网站建设 2026/6/9 8:26:50

自动泊车十年演进

下面这份内容,不是“APA / RPA / AVP 功能路线图”,也不是“泊车算法怎么做”的工程说明,而是站在 “自动泊车作为自动驾驶最早被用户完全交付控制权的系统形态”高度,对未来十年的一次结构性演进判断。🅿️&#x1f6…

作者头像 李华
网站建设 2026/6/9 19:50:39

停车场管理|停车预约管理|基于Springboot+的停车场管理系统设计与实现(源码+数据库+文档)

停车场管理|停车场信息 目录 基于Springboot微信小程序的停车场管理小程序系统 一、前言 二、系统功能设计 三、系统实现 1 管理员功能实现 车辆停放管理 车辆驶出管理 停车费用管理 车位信息管理 2用户功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最…

作者头像 李华
网站建设 2026/6/9 8:33:05

AI行业应用全景解析:从短视频、设计到服务业的深度落地

引言:人工智能的“iPhone时刻”已至随着ChatGPT、Midjourney、Sora等生成式AI(AIGC)工具的爆发,人工智能不再仅仅是实验室里的算法模型,而是已经深入到了各行各业的生产流程中。从内容创作到工业设计,从客户…

作者头像 李华
网站建设 2026/6/10 0:34:14

学术化分析:The God Particle音频处理插件

CSDN:古方路杰出青年一.插件概述The God Particle 是一款专业级别的动态均衡(Dynamic Equalizer)与多频段压缩(Multiband Compression)复合式音频处理插件,旨在对立体声信号的频谱动态进行精细化调控。它融…

作者头像 李华