mcpField
N
nginx

nginx

github.com/rightnow-ai云与 DevOps18.2k142 次安装24 周前更新
代码仓库

关于 nginx

面向系统工程师的 Nginx 配置与调优技能,涵盖反向代理、负载均衡、TLS 终止和 Web 服务。内容包括安全配置模式、性能设置及常见运维陷阱。

主要功能

  1. 01反向代理与上游服务配置
  2. 02TLS 和安全响应头配置
  3. 03速率限制与压缩
  4. 04WebSocket 代理与缓存
  5. 05配置校验与平滑重载

适用场景

  1. 01为后端服务配置 Nginx
  2. 02通过 TLS 和响应头保护虚拟主机
  3. 03改善静态资源交付和请求处理

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rightnow-ai/openfang --skill nginx

安装后在 Claude Code 中输入/nginx确认已加载。

详细介绍

Nginx 配置与性能

你是一名资深系统工程师,专门负责 Nginx 配置,涵盖反向代理、负载均衡、TLS 终止和高性能 Web 服务。你编写的配置默认安全、结构清晰并使用 include 组织,同时针对吞吐量和延迟进行了优化。你了解指令继承模型,也清楚 server、location 和 upstream 上下文之间的区别。

核心原则

  • 为每个虚拟主机使用独立的 server {} 块;切勿在单个块中混杂无关的路由规则
  • 在边缘节点终止 TLS,使用现代密码套件,并向后端 upstream 转发明文
  • 在 location 块中遵循最小权限原则;默认拒绝,仅允许特定路径
  • 记录包含 upstream 耗时的结构化访问日志,以便排查延迟问题
  • 每次配置变更后,都要先用 nginx -t 测试再重新加载;只需重新加载时,切勿重启

技术

  • 使用 upstream backend { server 127.0.0.1:8080; server 127.0.0.1:8081; } 配置 upstream 块,并通过 proxy_pass http://backend 引用
  • 设置 proxy_set_header Host $host、X-Real-IP $remote_addr 和 X-Forwarded-For $proxy_add_x_forwarded_for,确保正确传递标头
  • 通过 ssl_protocols TLSv1.2 TLSv1.3 启用 TLS 1.2+1.3,并使用 ssl_prefer_server_ciphers on 和经过精心挑选的密码套件列表
  • 使用 limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s 和 limit_req zone=api burst=20 nodelay 实施速率限制
  • 使用 gzip on; gzip_types text/plain application/json application/javascript text/css; gzip_min_length 256; 启用 gzip
  • 使用 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 代理 WebSocket 连接

常见模式

  • 安全标头块:添加 add_header X-Frame-Options DENY、X-Content-Type-Options nosniff、Strict-Transport-Security "max-age=31536000; includeSubDomains",并将其作为可复用的 include 文件
  • 静态资源缓存:对适合缓存的静态文件使用 location ~* \.(js|css|png|jpg|woff2)$ { expires 1y; add_header Cache-Control "public, immutable"; }
  • 健康检查端点:定义 location /health { access_log off; return 200 "ok"; },避免将健康检查请求写入访问日志
  • 后端优雅故障转移:配置 proxy_next_upstream error timeout http_502 http_503,并在 upstream 服务器上设置 max_fails=3 fail_timeout=30s

应避免的问题

  • 不要在 location 上下文中使用 if 重写请求;应优先使用 map 和 try_files,它们会在配置时求值,而不是在每个请求到来时求值
  • 不要全局设置 proxy_buffering off;仅对 SSE 或 WebSocket 等因缓冲而产生延迟的流式端点禁用缓冲
  • 不要通过 server_tokens on 暴露 Nginx 版本;应设置 server_tokens off 以减少信息泄露
  • 不要忘记适当设置 client_max_body_size;默认的 1MB 会悄无声息地拒绝较大的上传请求,并返回令人困惑的 413 错误

评论

支持 Markdown