返回工具集
游客今日剩余 5 / 5 次免费使用 立即登录
NGINX

Nginx 配置生成器

交互式生成安全、高性能的 Nginx 配置文件。

NGINX

填写表单并点击”生成配置”

常用指令参考

Nginx server 块常用指令速查,生成时自动使用

listen
监听端口

指定服务器监听的端口和协议,如 80(HTTP)或 443 ssl http2(HTTPS)。

server_name
域名匹配

定义该 server 块响应的域名,支持通配符和正则,如 *.example.com。

root
静态根目录

设置静态文件根目录,Nginx 将从此路径查找 URI 对应的文件。

proxy_pass
代理目标

反向代理的上游服务地址,通常指向后端应用端口,如 http://127.0.0.1:3000。

gzip
Gzip 压缩

开启响应压缩,减少传输体积,对文本类资源(HTML/CSS/JS)效果显著。

ssl_certificate
SSL 证书

指定 TLS 证书和私钥路径,Let's Encrypt 证书通常位于 /etc/letsencrypt/live/。

try_files
文件匹配

按顺序尝试路径,SPA 应用常用 $uri $uri/ /index.html 实现前端路由兜底。

expires
缓存过期

为匹配的响应设置 Cache-Control 和 Expires 头,静态资源建议 30d 或 1y。

add_header
响应头

追加自定义响应头,常用于安全头如 X-Frame-Options、HSTS 等。

配置参数

填写域名和端口,按需开启各项功能

启用 HTTPS / SSL
启用反向代理
SPA 路由回退(try_files 指向 index.html)
启用 Gzip 压缩
启用静态文件缓存

什么是 Nginx 配置生成器?

Nginx(读作“engine-x”)是全球最广泛使用的 Web 服务器、反向代理和负载均衡器之一。它支撑着全球超过 30% 的网站,是现代云原生基础设施的基石。然而,从零开始编写正确的 Nginx 配置文件需要对复杂的指令语法有深入了解,这往往既费时又容易出错。

本生成器通过提供交互式表单来消除这种摩擦,能够即时生成可直接用于生产环境的 nginx.conf Server 块。你可以轻松配置域名、监听端口、带证书路径的 SSL/TLS 终结、将流量转发到后端服务的反向代理设置、Gzip 压缩以及静态文件缓存。

如何使用此工具

填写你的“服务器名称”(域名),选择“监听端口”(默认为 80),并根据需要开启各项功能。如果你开启了 SSL,请提供证书和私钥文件的路径(我们推荐使用 Certbot 获取 Let's Encrypt 免费证书)。如果开启反向代理,请输入后端服务的 URL(例如 Node.js 应用的 http://127.0.0.1:3000)。开启 Gzip 可节省带宽,开启静态缓存则可提升资源密集型网站的性能。

点击“生成配置”生成完整的 Server 块。完成后将其复制到 /etc/nginx/sites-available/your-domain.conf,创建到 sites-enabled 的软链接,运行 nginx -t 测试语法,最后通过 sudo systemctl reload nginx 重新加载。在推向生产环境前请务必仔细检查输出内容。

典型生产场景

静态站点服务
root + try_files

适用于纯 HTML/CSS/JS 站点或文档托管。配置 root 指向构建产物目录(如 /var/www/html),配合 try_files $uri $uri/ /index.html 处理路径兜底,以及独立的 location 块为静态资源配置强缓存(expires 1y; Cache-Control: public, immutable)。建议同时开启 Gzip 压缩,对 JS/CSS 文本资源可节省 60-80% 传输体积。

前端 SPA 应用
try_files $uri /index.html

单页应用(React、Vue、Angular)的核心需求是把所有非文件路径回退到 index.html,由前端路由处理。使用 try_files $uri $uri/ /index.html 即可实现。带 hash 后缀的静态 bundle 可配置 1 年强缓存(Cache-Control: public, immutable),而 index.html 本身必须设置 no-cache 或极短 max-age,确保新版本部署后用户能立即获取最新入口文件。

反向代理 Node.js / Python 后端
proxy_pass

最常见的配置模式:Nginx 监听 80/443,proxy_pass 转发到本地应用端口(如 http://127.0.0.1:3000)。必须设置 proxy_http_version 1.1 和正确的 Host、X-Real-IP、X-Forwarded-For 头,否则后端拿不到真实客户端 IP。proxy_cache_bypass $http_upgrade 确保 WebSocket 握手不被缓存拦截。建议配置 proxy_connect_timeout 5s 和 proxy_read_timeout 60s,快速暴露上游故障。

HTTPS + HTTP 强制跳转
ssl_certificate

标准配置包含两个 server 块:监听 443 并配置 ssl_certificate、ssl_protocols TLSv1.2 TLSv1.3、ssl_ciphers HIGH:!aNULL:!MD5、ssl_session_cache shared:SSL:10m;另一个监听 80 并 return 301 https://$host$request_uri 强制跳转。证书推荐用 Let's Encrypt + Certbot 自动申请续签。开启 OCSP Stapling(ssl_stapling on)可预取证书状态,减少客户端 TLS 握手延迟。

WebSocket 反向代理
Upgrade $http_upgrade

WebSocket 需透传 HTTP Upgrade 握手:proxy_http_version 1.1、proxy_set_header Upgrade $http_upgrade、proxy_set_header Connection “upgrade”。默认 proxy_read_timeout 为 60s,对长连接应调至 3600s,避免空闲连接被中断。多实例场景需注意 WebSocket 会话的粘性路由(ip_hash 或基于 session ID 的 header hash),确保同一连接始终路由到同一后端。

多实例负载均衡
upstream { }

在 http 块定义 upstream,列出所有后端节点,proxy_pass 指向 upstream 名称。默认轮询适合无状态服务;least_conn 适合响应时间差异大的场景;ip_hash 在无外部会话存储时可实现会话保持,但节点增减时 hash 分布会重排。每个 server 条目建议配置 max_fails=3 fail_timeout=30s 实现被动健康检查,超阈值节点临时从轮询中剔除。

性能与安全注意事项

worker_processes 建议设为 auto(等于 CPU 核数),worker_connections 默认 1024 在生产环境偏低,建议调至 4096 以上,配合 use epoll(Linux)支撑更高并发。Gzip 的 gzip_comp_level 建议 4-6,过高会造成 CPU 浪费而带宽收益边际递减。静态文件传输启用 sendfile on 利用内核零拷贝;tcp_nopush on 合并小包减少 TCP 握手次数,两者配合使用效果显著。

SSL/TLS 层面,ssl_session_cache shared:SSL:10m 开启会话缓存减少重复握手开销;ssl_session_timeout 1d 合理延长复用窗口。开启 OCSP Stapling(ssl_stapling on; ssl_stapling_verify on)让 Nginx 预先获取证书吊销状态,避免客户端发起额外 OCSP 请求的延迟。仅开放 TLSv1.2 和 TLSv1.3,禁用弱密码套件(!aNULL !MD5 !RC4)。

速率限制是抵御暴力破解和 CC 攻击的必要手段。在 http 块定义 limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s,在敏感 location 中使用 limit_req zone=api burst=20 nodelay。登录、注册等接口速率应更严格(如 2r/m)。同时配置 client_max_body_size 限制上传体积,避免大请求耗尽内存。

location 匹配规则与 proxy_pass 斜杠陷阱

location 的匹配优先级常被误解,导致请求落到非预期的块。优先级从高到低为:= 精确匹配最高,其次是 ^~ 前缀匹配(命中后不再检查正则),再次是 ~ 与 ~* 正则匹配(区分与不区分大小写,按配置书写顺序匹配),最后才是普通前缀匹配(取最长命中)。一个典型陷阱是:用正则 location 给 js、css、图片等静态资源配置强缓存,却被前面的正则规则提前截获——把静态资源块改为 ^~ 前缀匹配,或调整正则的书写顺序即可解决。

proxy_pass 末尾加不加斜杠,行为完全不同,是反向代理最高频的踩坑点。当 location /api/ 代理到 http://backend/(带斜杠)时,会把 /api/ 前缀从请求路径中剥离,后端收到的是 /;而代理到 http://backend(不带斜杠)时,会把完整的 /api/ 透传给后端。需要保留路径前缀就不要加斜杠,需要剥离前缀就加斜杠。注意:proxy_pass 中只要包含 URI 部分(哪怕只是一个 /),Nginx 就会做路径替换。

常见错误排查:502 / 504 / 413

502 Bad Gateway 表示 Nginx 能收到请求但连不上上游服务,排查顺序:① 确认上游进程是否在监听(ss -ltnp 看端口);② 检查 proxy_pass 的地址和端口是否写对;③ 若上游在本机却仍 502,多半是 SELinux 或防火墙拦截了 Nginx 到上游的连接(setsebool -P httpd_can_network_connect 1);④ upstream 使用域名时确认 DNS 可解析。日志看 /var/log/nginx/error.log 的 connect() failed 行能直接定位。

504 Gateway Timeout 是上游响应太慢、超过了超时阈值,可调大 proxy_connect_timeout、proxy_read_timeout、proxy_send_timeout(默认均为 60s),但更应排查上游为何变慢,单纯调大超时只是掩盖问题。413 Request Entity Too Large 是上传体积超过 client_max_body_size(默认仅 1m),按需在 http 或 location 块调大,例如文件上传接口设为 client_max_body_size 50m;注意这是 Nginx 层限制,后端可能还有各自的体积限制需要同步放开。

常见问题