跳到正文
马克工具箱

nginx 配置生成器

填写域名、选择站点类型,勾选需要的功能,即可得到一份可直接使用的 nginx server 配置。支持反向代理(Node.js、Python、Java 应用)、静态网站、单页应用(Vue、React)和 PHP,包括 HTTP 跳转 HTTPS、www 跳转、WebSocket、gzip 和静态资源缓存。

在浏览器本地运行,输入的内容和文件都不会上传

HTTPS
其他

0 表示使用 nginx 默认的 1 MB。

先申请证书,例如:certbot certonly --webroot -w /var/www/letsencrypt -d example.com -d www.example.com。然后执行 nginx -t 检查并重新加载 nginx。

使用步骤

  1. 填写域名,选择站点类型:反向代理填上游地址,其他类型填网站根目录。
  2. 按需要勾选 HTTPS、HTTP/2、HSTS、www 跳转、gzip、缓存和安全响应头。
  3. 复制或下载配置,放到 /etc/nginx/conf.d/,执行 nginx -t 检查后重新加载 nginx。

参数说明

反向代理
转发到上游地址,并传递 Host、X-Real-IP、X-Forwarded-For、X-Forwarded-Proto 请求头,后端可以拿到真实访客 IP 和协议。
单页应用
找不到的路径回退到 index.html,适合 Vue Router、React Router 的 history 模式,刷新页面不会 404。
HTTPS
证书路径按 certbot(Let's Encrypt)默认位置生成,HTTP 请求 301 跳转到 HTTPS。HTTP/2 用 listen 443 ssl http2 写法,兼容各版本 nginx。
HSTS
让浏览器在一年内只用 HTTPS 访问该域名和所有子域。开启前请确认所有子域都已配置 HTTPS,否则会无法访问。

示例:带 HTTPS 和 www 的单页应用

域名填 example.com,站点类型选「单页应用」,勾选「HTTPS(Let’s Encrypt 证书路径)」、HTTP/2 和「同时响应 www. 并跳转到主域名」(为了简短,关闭「Gzip 压缩」「安全响应头」和「静态资源长缓存」),生成器会写出三个 server 块:

  1. 80 端口同时响应两个域名,保留 /.well-known/acme-challenge/ 可访问以便证书续期,其余请求都以 301 跳转到 https://example.com$request_uri。
  2. www.example.com 的 443 端口使用同一张证书,并 301 跳转到不带 www 的域名。
  3. example.com 的 443 端口提供网站内容:
    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

两个 HTTPS 块都指向 /etc/letsencrypt/live/example.com/fullchain.pem 和 privkey.pem,允许 TLS 1.2 和 1.3,使用 10 MB 的共享会话缓存,会话超时为一天。try_files 这一行的作用是:在 /settings 这样的前端路由上刷新页面时,返回的是应用本身,而不是 404。

常见问题

为什么 nginx -t 提示 http2 指令已弃用?

nginx 1.25.1 起推荐单独写 http2 on;,但 Ubuntu 24.04 等系统自带的 1.24 还不支持这个写法,所以这里用兼容所有版本的 listen 443 ssl http2。新版本只会给出警告,不影响使用。

开启 www 跳转后证书要包含 www 吗?

要。申请证书时同时加上两个域名,例如 certbot -d example.com -d www.example.com。

上传文件报 413 Request Entity Too Large 怎么办?

nginx 默认只允许 1 MB 的请求体,把「上传大小上限」改成需要的值(例如 100)即可。

WebSocket 连接失败怎么办?

反向代理需要转发 Upgrade 和 Connection 请求头,勾选「支持 WebSocket」会自动加上,并把读取超时延长到 1 小时。

隐私说明

本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。

相关工具