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

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

相关推荐
Java后端的Ai之路2 小时前
03_React_JSX
前端·react.js·前端框架
颜进强3 小时前
26 · NestJS 基础篇 · 全专栏总结:五个阶段,一次收拢
前端·后端·ai编程
风寄巴山秋3 小时前
OpenBMC:Web 页面功能异常排查
运维·服务器·前端·架构
程序员Sunday3 小时前
Promise.all、allSettled、race、any 怎么选,失败后其他请求会怎样
开发语言·前端·javascript
niucloud-admin3 小时前
JAVA V6 多商户商城 开发文档——管理端前端
前端
weixin_422201303 小时前
如何解决小程序图标点击热区小,落点不准问题?
前端·小程序·样式·点击热区·扩大
szial4 小时前
JavaScript 的 call、apply 和 bind:如何控制函数调用
开发语言·前端·javascript
CopyCode4 小时前
Agent 开发不是模型训练:一个前端的入门认知
前端·llm·agent
吠品4 小时前
HTTPS 真身:HTTP 套了层 TLS
java·服务器·前端
JYeontu4 小时前
实现一个「曲线滑块验证」功能
前端·javascript·html