Vercel 配置服务端代理

2024-08-23 01:32
文章标签 配置 服务端 代理 vercel

本文主要是介绍Vercel 配置服务端代理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

解决问题

Vercel 是一个用于静态站点和无服务器功能的云平台,非常适合您的工作流。它使开发人员能够托管即时部署、自动扩展、无需监督、无需配置的网站和web服务。

Vercel 部署的站点是 HTTPS 协议的。

默认部署一个静态web服务时,下面两个场景会发生问题:

  • 请求了跨域资源,开发阶段配置了代理,但是 Vercel 部署默认不会配置
  • 请求的是 HTTP 协议的资源,Vercel 部署的站点是 HTTPS 协议的,所以浏览器会阻止

可以通过配置 Vercel 服务端代理来解决。

Vercel 配置服务端代理步骤:

  1. 部署 serverless,实现代理
  2. 配置相应的路径,统一转发到 serverless 服务

示例介绍

以 Vue CLI 生成的项目为例,使用 Vercel 部署了 HTTPS 协议的站点。

站点地址例如:https://vue-front.com

项目中需要请求第三方 API:http://backend-api.com/user/login

Vercel 部署 serverless 无服务器功能

Vercel Serverless Functions

使用 Vercel,您可以部署 Serverless Functions。

Serverless Functions 使用后端语言(例如 Node.js)编写的代码片段,接收 HTTP 请求并提供响应。

您可以使用 Serverless Functions 来处理用户身份验证、表单提交、数据库查询、定制slack命令等等。

以 Node.js 为例:

Node.js 文件通过 api 目录下的一个 JS 文件或 TS 文件,包含一个默认的导出函数,将作为 Serverless Functions。

安装代理中间件:

npm i -D http-proxy-middleware

在项目根目录创建 api 目录,在 api 下添加 proxy.js文件。

注意:只能将 Serverless 文件存放在 根目录下的 api 目录下才能被识别

const { createProxyMiddleware } = require('http-proxy-middleware')module.exports = (req, res) => {let target = ''// 代理目标地址// 这里使用 backend 主要用于区分 vercel serverless 的 api 路径if (req.url.startsWith('/backend')) {target = 'http://backend-api.com'}// 创建代理对象并转发请求createProxyMiddleware({target,changeOrigin: true,pathRewrite: {// 通过路径重写,去除请求路径中的 `/backend`// 例如 /backend/user/login 将被转发到 http://backend-api.com/user/login'^/backend/': '/'}})(req, res)
}

此时可以提交文件触发 Vercel 部署,测试 Serverless Functions 是否生效:

在这里插入图片描述

此时访问 https://vue-web.com/api/proxy 就会执行编写的后端代码。

Vercel 配置本地路径和重写

Vercel 配置参考

通过在项目根目录放置一个 vercel.json配置文件,您可以提供一个选项列表来更改 Vercel 平台的默认行为。

Vercel 之前的版本可以通过 routes 配置路由,不过现在已经过时,官方建议使用 rewrites(重写)实现类似的需求。

在项目根目录下创建 vercel.json

{"rewrites": [{// 访问路径匹配规则"source": "/backend/(.*)",// 重写的目标地址"destination": "/api/proxy"}]
}

请注意:以上注释仅用于说明,json 文件中不能写注释

该配置会将 https://vue-web.com/backend/为前缀的请求重写,转为请求 https://vue-web.com/api/proxy

由于是重写,不会二次跳转,request 中的信息都会保留,所以不需要将后面的路径传递给 /api/proxy

/api/proxy 内部会判断,如果请求路径以 /backend 为前缀,则代理到 http://backend-api.com

再次提交部署,服务器代理配置完成。

简单示例

使用 Vercel 托管你的 API 服务

这篇关于Vercel 配置服务端代理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097968

相关文章

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo