前端必知:Nginx代理实战全指南

一、先搞懂:前端视角的 Nginx 代理核心概念

1. 什么是 Nginx 代理?

Nginx 是一款高性能的 HTTP 服务器 / 反向代理服务器,对前端来说,「代理」就是:

  • 前端请求 → 先发给 Nginx 服务器 → Nginx 代替前端请求后端接口 / 获取资源 → Nginx 将结果返回给前端。
  • 核心价值:突破浏览器「同源策略」(跨域)、统一接口域名、优化资源加载(缓存 / 压缩)。
2. 代理的核心类型(前端只关注这 2 种)
代理类型核心作用前端使用场景
反向代理(常用)Nginx 代理前端请求到后端服务器(隐藏后端地址)解决跨域、接口转发、部署多环境
正向代理Nginx 代理前端访问外部网络(如翻墙)开发环境访问外网接口(极少用)

对前端来说,99% 的场景都是「反向代理」,下文所有内容均围绕反向代理展开。

二、前端日常项目中 Nginx 代理的核心使用场景

场景 1:解决开发 / 生产环境的跨域问题(最核心)

浏览器的「同源策略」要求前端页面和接口的「协议、域名、端口」必须一致,否则跨域。Nginx 代理能让前端请求先到 Nginx(同源),再由 Nginx 转发到后端(Nginx 无跨域限制)。

(1)开发环境:本地 Nginx 代理(替代 devServer 代理)
  • 适用场景:后端接口未配置 CORS,或本地 devServer 代理满足不了复杂需求(如多域名转发)。

前端代码中请求写法(无需写完整后端地址,直接请求同源的 /api):

// 前端请求:http://localhost:8080/api/user → Nginx 转发到 http://192.168.1.100:8081/user axios.get('/api/user').then(res => console.log(res)); 

配置示例(nginx.conf):nginx

# 配置 Nginx 监听本地端口(和前端页面同源) server { listen 8080; # 前端页面运行在 http://localhost:8080 server_name localhost; # 代理后端接口:前端请求 /api → 转发到后端真实地址 location /api/ { # 后端接口真实地址 proxy_pass http://192.168.1.100:8081/; # 关键配置:传递请求头(解决跨域+后端识别来源) proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } # 代理前端静态资源(本地打包后的dist目录) location / { root /Users/xxx/project/dist; # 前端dist目录绝对路径 index index.html index.htm; try_files $uri $uri/ /index.html; # 解决Vue/React路由刷新404 } } 
(2)生产环境:服务器 Nginx 代理(部署必用)
  • 适用场景:前端打包后部署到服务器,接口请求通过 Nginx 转发,避免跨域 + 隐藏后端真实地址。

核心配置(生产环境优化版):nginx

server { listen 80; server_name www.xxx.com; # 前端域名 # 静态资源缓存(优化加载速度) location ~* \.(js|css|png|jpg|gif|svg)$ { root /usr/share/nginx/html; # 前端dist目录 expires 7d; # 静态资源缓存7天 gzip on; # 开启gzip压缩 } # 接口代理:前端请求 /api → 转发到后端服务器集群 location /api/ { proxy_pass http://backend_server/; # 后端集群地址(可配置多个) proxy_connect_timeout 60s; # 连接超时 proxy_read_timeout 60s; # 读取超时 # 跨域头(生产环境若前端和Nginx同源,可省略) add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET,POST,PUT,DELETE'; } # 前端路由兼容(Vue/React History模式) location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; # 刷新页面不404 } } 
场景 2:多环境接口转发(开发 / 测试 / 生产)

前端开发中常需切换接口环境(开发 / 测试 / 生产),Nginx 可通过不同 location 配置转发到不同后端:

server { listen 8080; server_name localhost; # 开发环境接口 location /api/dev/ { proxy_pass http://dev.xxx.com/; } # 测试环境接口 location /api/test/ { proxy_pass http://test.xxx.com/; } # 生产环境接口 location /api/prod/ { proxy_pass http://prod.xxx.com/; } } 

前端只需修改请求路径(如 /api/dev/user → /api/test/user),即可切换环境,无需改代码。

场景 3:静态资源优化(部署阶段)

Nginx 可代理前端静态资源(JS/CSS/ 图片),并配置缓存、压缩、防盗链,提升页面加载速度:

server { listen 80; server_name www.xxx.com; # 静态资源配置 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { root /usr/share/nginx/html; expires 30d; # 缓存30天 gzip on; # 开启gzip压缩(减小文件体积) gzip_types text/css application/javascript image/png; # 压缩类型 # 防盗链(只允许自己域名访问资源) valid_referers www.xxx.com; if ($invalid_referer) { return 403; } } # 前端页面 location / { root /usr/share/nginx/html; index index.html; try_files $uri $uri/ /index.html; } } 
场景 4:本地开发代理(替代 Vue CLI/ Vite 内置代理)

Vue CLI 的 devServer.proxy、Vite 的 server.proxy 本质是「Node 代理」,但复杂场景(如多域名、自定义请求头)不如 Nginx 灵活。

  • 举例:Vite 项目改用 Nginx 代理:
    1. 启动 Vite 项目:npm run dev(运行在 http://localhost:5173);
    2. 前端请求 /api/user → Nginx 转发到后端,解决跨域。

配置 Nginx 监听 5173,转发接口:

server { listen 5173; server_name localhost; # 代理接口到后端 location /api/ { proxy_pass http://192.168.1.100:8081/; } # 代理 Vite 开发服务器(前端页面) location / { proxy_pass http://localhost:5173/; proxy_set_header Host $host; } } 

三、前端使用 Nginx 代理的核心步骤(实战流程)

步骤 1:安装 Nginx(本地 / 服务器)
  • 本地(Mac):brew install nginx
  • 本地(Windows):官网下载压缩包,解压后运行 nginx.exe
  • 服务器(Linux):yum install nginx(CentOS)/ apt install nginx(Ubuntu)。
步骤 2:修改 Nginx 配置文件
  • 本地配置文件路径:
    • Mac:/usr/local/etc/nginx/nginx.conf
    • Windows:nginx-xxx/conf/nginx.conf
  • 服务器配置文件路径:/etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf
  • 核心:修改 server 块,添加代理规则(参考上面的场景配置)。
步骤 3:启动 / 重启 Nginx
# 启动 Nginx nginx # 重启 Nginx(修改配置后) nginx -s reload # 停止 Nginx nginx -s stop # 检查配置是否正确 nginx -t 
步骤 4:前端代码适配
  • 接口请求路径改为「相对路径」(如 /api/user),而非完整后端地址(如 http://192.168.1.100:8081/user);
  • 无需配置跨域相关代码(如 withCredentials),由 Nginx 处理。

四、前端视角的 Nginx 代理核心总结

1. 核心作用(前端关心的 3 件事)
  • 解决跨域:Nginx 作为中间层,让前端请求和 Nginx 同源,Nginx 再转发到后端(绕过浏览器跨域限制);
  • 接口转发:统一接口域名,切换环境只需改 Nginx 配置,无需改前端代码;
  • 优化部署:缓存静态资源、压缩文件、兼容前端路由(History 模式)。
2. 日常使用高频场景
场景核心配置关键词
跨域接口代理proxy_pass + 跨域头
前端路由兼容try_files $uri $uri/ /index.html
静态资源缓存expires + gzip
多环境接口转发不同 location 配置
3. 关键注意点
  • 配置 proxy_pass 时,末尾的 / 很关键:
    • proxy_pass http://backend/;:前端请求 /api/user → 转发到 http://backend/user
    • proxy_pass http://backend;:前端请求 /api/user → 转发到 http://backend/api/user
  • 本地开发优先用 Vue CLI/Vite 内置代理(更轻便),复杂场景再用 Nginx;
  • 生产环境部署时,Nginx 配置需加 try_files 解决前端路由刷新 404 问题。

简单记:对前端来说,Nginx 代理就是「解决跨域的中间服务器」+「部署优化的工具」,核心配置就围绕 proxy_pass(转发)、try_files(路由)、expires/gzip(资源)这几个关键点。

// 后端代码 const Koa = require('koa') const Router = require('koa-router') const app = new Koa() const router = new Router() router.get('/api/login', async ctx=>{ ctx.body = 'login success' }) app.use(router.routes()) app.listen(3000,()=> console.log('server running at port 3000...') })
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=1920,maximum-scale=1.3,user-scalable=no"> <title>前端页面</title> </head> <body> <h1>前端页面,运行在800端口</h1> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <script> axios.get('/api/login').then(res => { console.log('data',res.data) }) </script> </body> </html> 
# nginx反向代理 请求--->8080 请求路径为/,代理到8000端口(前端) 请求路径为/api,代理到3000端口(后端) localhost:8080/index.html,代理到localhost:8000/index.html localhost:8080/api/login,代理到localhost:3000/api/login 
http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8080; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://localhost:8000; } location /api { proxy_pass http://localhost:3000; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }

Read more

AI率30%、20%、10%到底哪个才是标准?各高校要求汇总

AI率30%、20%、10%到底哪个才是标准?各高校要求汇总 开篇:这个问题真的让人头大 “我们学校AI率要求多少来着?” 这大概是2025-2026年毕业季里,各论文群被问到最多的问题了。我在三个不同的考研/论文群里潜水,几乎每天都能看到有人在问这个问题。而且更让人焦虑的是,大家的回答还经常不一样——有人说30%以下就行,有人说必须20%以下,还有人信誓旦旦说他们学校要求10%以下。 到底哪个才是标准?答案是:没有统一标准。 对,你没看错。目前国内高校对论文AI率的要求并没有一个全国统一的规定,每个学校、甚至每个学院都可能有自己的标准。但是,经过我大量的信息搜集和整理,还是能找到一些规律的。今天就来好好捋一捋。 目前主流的三档标准 根据我收集到的信息,国内高校的AIGC检测标准大致可以分为三个档次: 第一档:30%以下(宽松型) 这是目前最常见的标准线,大概有40%左右的高校采用这个标准。 这意味着什么:你的论文中,AI生成的内容占比不能超过30%。换句话说,有将近三分之一的内容可以是AI辅助生成的(当然不建议这么理解,往下看就知道了)

2026年3月16日人工智能早间新闻

各位读者,早上好。今天是2026年3月16日,星期一。欢迎收看人工智能早间新闻。今日,全球科技界的目光齐聚美国圣何塞——被誉为“AI春晚”的英伟达GTC 2026大会正式拉开帷幕。与此同时,从马斯克官宣造芯计划到国内AWE展会上AI技术的全面渗透,人工智能领域的竞合格局正在发生深刻变化。 一、全球焦点:英伟达GTC 2026今日开幕,下一代芯片架构备受期待 当地时间今日上午,英伟达GTC 2026年度技术大会将在美国加州圣何塞正式开幕。作为全球人工智能与高性能计算领域的顶级会议,本届GTC大会被视为“全球AI算力年度风向标”,其发布的每一项技术更新都将深刻影响未来数年的产业走向。 1. 黄仁勋主题演讲今晚登场:英伟达CEO黄仁勋的主题演讲定于当地时间今日上午11时(北京时间3月17日凌晨2时)在圣何塞SAP中心举行,预计将持续两小时。演讲将重点介绍包括Feynman芯片架构与NemoClaw开源AI智能体平台在内的多项AI基础设施更新,涵盖AI产品发展蓝图、新芯片、AI工厂、开放模型、智能体、物理AI及未来AI产业发展方向等内容。 2. Feynman架构前瞻:1.6纳米制程

通义灵码超全使用教程:从安装到实战,AI 编程效率拉满

通义灵码超全使用教程:从安装到实战,AI 编程效率拉满

前言 作为阿里云推出的智能编码助手,通义灵码凭借代码智能生成、智能问答、多文件批量修改、编程智能体等核心能力,能让开发者从重复编码中解放,专注于技术设计,目前百万开发者在用,企业端 AI 代码生成占比超 25%,研发效率平均提升 10%+lingma.aliyun.com。本文结合阿里云官方文档和实际实操经验,用通俗易懂的方式讲清通义灵码的安装、核心功能使用、实战技巧和常见问题解决,新手也能快速上手,让 AI 真正成为你的编程搭子! 一、通义灵码基础认知 1. 核心能力 通义灵码的核心能力围绕「提效」展开,四大核心模式覆盖编码全流程: * 代码补全:秒级生成行 / 函数级代码、单元测试,支持注释生成代码,跨文件感知上下文; * 智能问答:不用离开 IDE,解决编码难题、排查报错,还支持图片多模态问答(贴截图就能解问题); * 文件编辑:精准实现多文件批量修改,支持迭代和快照回滚,

Spring AI系列——开发MCP Server和MCP Client(SSE方式)

Spring AI系列——开发MCP Server和MCP Client(SSE方式)

文章目录 * 一、概述 * MCP架构图 * MCP生命周期 * 二、创建MCP SERVER的java工程 * 生成初始化工程代码 * 修改pom.xml文件 * 定义服务类MathTool * 通过配置类的方式把MathTool注入到Spring容器中 * 修改配置文件application.yaml * 启动服务 * 三、如何使用MCP Server * 方式一:使用Chatbox连接MCP Server * 设置AI模型提供方 * 配置MCP服务器 * 使用MCP Server * 方式二:开发一个Client来连接Server * 创建java工程 * 修改pom.xml,添加核心依赖 * 配置application.yaml * 创建Controller * 启动Client服务 * 访问接口进行测试 * 四、资料 一、概述 MCP架构图 MCP生命周期 二、创建MCP SERVER的java工程