侧边栏壁纸
博主头像
恪晨博主等级

前端程序员

  • 累计撰写 147 篇文章
  • 累计创建 41 个标签
  • 累计收到 18 条评论

目 录CONTENT

文章目录

使用Vercel对网站进行反向代理

恪晨
2022-11-16 / 0 评论 / 0 点赞 / 892 阅读 / 852 字 / 正在检测是否收录...

前言

  因为网站都是部署在家里的nas,运营商禁用了80和443端口,所以做了DDNS的时候需要使用端口进行访问,如果需要直接使用域名访问,则需要进行使用一些域名代理的方式,如frp、nps之类的,之前买了一个国外的vps,然后使用nps进行代理的,但是这玩意时不时就会断,就很麻烦,昨天看到了有人使用vercel的方式进行反向代理,因此试了试,效果还不错,也可以自定义域名,相当于白嫖了Vercel的CDN。

配置

1、首先需要在本机上安装Vercelnpm i -g vercel

2、安装好以后,使用vercel login命令进行登录,登录过程中根据提示操作即可

3、登录成功后,新建一个json文件,里面的内容如下,其中https://nas.wangboweb.site:9201就是你要代理的地址,因为我的博客地址是这个

{
    "version": 2,
    "routes": [
      {"src": "/(.*)","dest": "https://nas.wangboweb.site:9201"}
    ]
  }

4、然后在这个json文件所在目录,打开终端,执行以下命令,比如我的json文件命名是web.json
verceL -A web.json --prod

5、执行后他就开始部署了,根据提示信息进行相关选择配置接口。部署成功后,控制台会给你一个默认的域名,这个域名打开就能看到你代理的网站了。同时在vercel控制台也能看到这个服务。

6、再到服务settings-domains中绑定你的域名
image-1668562564613

7、在域名解析控制台添加对应的CNAME,记录值就是cname.vercel-dns.com,添加完成后解析成功就能正常访问了,ssl证书也省了。

其他

  当然,在json文件中还可以配置一些其他api相关的代理,如

{
  "routes": [
    { "src": "/redirect", "status": 308, "headers": { "Location": "https://example.com/" } },
    { "src": "/custom-page", "headers": {"cache-control": "s-maxage=1000"}, "dest": "/index.html" },
    { "src": "/api", "dest": "/my-api.js" },
    { "src": "/users", "methods": ["POST"], "dest": "/users-api.js" },
    { "src": "/users/(?<id>[^/]*)", "dest": "/users-api.js?id=$id" },
    { "src": "/legacy", "status": 404},
    { "src": "/.*", "dest": "https://my-old-site.com"}
  ]
}

更多的可以查看官方文档:https://vercel.com/docs/project-configuration#legacy/routes

存在问题

  目前来看,一个服务好像只能代理一个地址,因为这个服务要绑定指定的域名进行反向代理,所以没有办法在一个json文件中配置多个反向代理,这样就比较麻烦,相当于我如果有很多服务需要代理的话就需要配置很多服务,就没那么友好了。后续如果找到了更好的办法再说吧。

  还有就是,比如用nps、frp之类的可以直接通过域名代理内网地址,vercel的话不能直接代理内网地址,这也是个问题。

0

评论区