前端必备 Nginx 实战指南 8 个核心场景直接抄

前端必备 Nginx 实战指南 8 个核心场景直接抄

现在前端开发早就不是只写页面了 部署上线相关的 Nginx 配置也得懂 不然遇到问题只能等别人帮忙。其实 Nginx 对前端来说 核心就是解决部署路由缓存跨域这些问题 下面 8 个实战场景 配置直接能用。

先搞懂基础部署流程

1 本地运行 npm run build 生成 dist 或 build 文件夹2 把文件夹上传到 Linux 服务器 常见路径是 /usr/share/nginx/html3 配置 Nginx 文件 让服务器能访问静态资源4 启动 Nginx 完成部署

Nginx 配置文件常见路径

  • 主配置文件 /etc/nginx/nginx.conf
  • 站点配置 /etc/nginx/conf.d/your-site.conf 或 /etc/nginx/sites-enabled/default

8 个核心配置场景

1 静态资源托管前端打包后的 HTML CSS JS 图片等 都靠 Nginx 提供访问 这是最基础的配置。

ini 复制代码
location / {
    root /usr/share/nginx/html;
    index index.html;
}

2 History 路由兜底React Vue 用 History 模式时 刷新页面会 404 用 try_files 把所有路由指向 index.html 就行。

bash 复制代码
location / {
    try_files $uri $uri/ /index.html;
}

3 缓存策略优化静态资源设强缓存 7 天内不用重复下载 index.html 禁用强缓存 保证更新能及时生效。

ini 复制代码
server {
    listen 80;
    server_name yourdomain.com;
    root /usr/share/nginx/html;

    location / {
        add_header Cache-Control no-cache no-store must-revalidate;
        add_header Pragma no-cache;
        add_header Expires 0;
        try_files $uri /index.html;
    }

    location ~* .(?:js|css|png|jpg|jpeg|gif|svg|ico|woff2?|ttf)$ {
        expires 7d;
        add_header Cache-Control public;
    }
}

4 跨域与反向代理线上接口跨域 或者需要转发请求到后端 用这个配置 不用前端额外处理。

javascript 复制代码
location ^~ /api/ {
    proxy_pass http://backend_server;
    add_header Access-Control-Allow-Origin *;
}

5 负载均衡接口请求量大时 把请求分发到多台后端服务器 支持权重 ip_hash 等策略。

ini 复制代码
upstream backserver {
    server 127.0.0.1:8080 weight=2;
    server 127.0.0.1:9090;
}

6 灰度发布与 A/B 测试根据 cookie 把用户分到不同版本 适合功能测试或灰度上线。

ini 复制代码
upstream stable {
    server 127.0.0.1:8080;
}
upstream canary {
    server 127.0.0.1:9090;
}

server {
    listen 80;
    server_name mysite.com;
    set $group stable;

    if ($http_cookie ~* tts_version_id=canary) {
        set $group canary;
    }

    location / {
        proxy_pass http://$group;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

7 优雅降级SSR 服务挂了之后 自动切换到 CSR 静态页面 保证用户能正常访问。

ini 复制代码
upstream ssr {
    server 127.0.0.1:8080;
}
upstream csr {
    server 127.0.0.1:9090;
}

server {
    listen 80;
    server_name mysite.com;

    location ^~ /ssr/ {
        proxy_pass http://ssr;
        proxy_intercept_errors on;
        error_page 500 502 503 504 = @csr_location;
    }

    location @csr_location {
        rewrite ^/ssr/(.*)$ /$1 break;
        proxy_pass http://csr;
    }
}

8 图片格式自动兼容浏览器支持 WebP 就返回 WebP 格式 不支持就降级为 PNG 或 JPG 提升加载性能。

ini 复制代码
http {
    map $http_accept $webp_suffix {
        default   "";
        ~*webp  .webp;
    }

    upstream static_env {
        server 127.0.0.1:8080;
    }

    server {
        listen 80;
        server_name mysite.com;

        location ~* .(png|jpe?g)$ {
            if ($webp_suffix ~* webp) {
                rewrite ^/(.*).(png|jpe?g)$ /$1.webp break;
                error_page 404 = @static_img;
            }

            proxy_intercept_errors on;
            add_header Vary Accept;
            proxy_pass http://static_env;
            expires 7d;
        }

        location @static_img {
            rewrite ^/.+$ $request_uri break;
            proxy_pass http://static_env;
            expires 7d;
        }
    }
}

其实前端用 Nginx 不用搞复杂的 核心就是解决部署后的各种问题 比如资源访问路由兼容性能优化这些。上面的配置直接抄过去 改改路径和域名就能用 掌握这些 部署上线再也不用等别人帮忙了。

海云前端丨前端开发丨简历面试辅导丨求职陪跑

相关推荐
计算机魔术师11 小时前
NVIDIA 季度营收指引达 1080 亿美元,首次突破单季千亿大关
前端
数据狐(Datafox)11 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
风萧何11 小时前
架构艺术,是权衡的艺术。
前端·javascript·架构
YIAN11 小时前
ESLint 新版 Flat Config 实战:团队代码风格统一,从这一份配置开始
前端·团队管理
计算机魔术师11 小时前
英伟达单季营收逼近千亿美元,黄仁勋放话:真实需求远超想象
前端
明月_清风11 小时前
看完这段关于"全插件化架构"的技术分析后,我整理了一份笔记
前端·后端
YIAN11 小时前
Next.js App Router 全栈实战:从 0 到 1 写一个 Todo 应用,前端后端一个项目搞定
前端·全栈·next.js
计算机魔术师11 小时前
英伟达预计 2028 财年营收同比增 70%,黄仁勋称实际需求远高于此
前端
掘金酱12 小时前
🔥 AI 时代,Token 就是你的数字燃料!晒账单,赢好礼!
前端·人工智能·ai编程
计算机魔术师12 小时前
Warp用Claude搭自我改进智能体
前端