首页
文章
标签
关于
使用aws-cloudfront做CDN转发
发布于: 2023-3-20   更新于: 2023-3-21   未收录
文章字数: 412   阅读时间: 2 分钟   阅读量:

CND转发到v2ray服务

环境:

  • 域名一个
  • aws cloudfront服务

数据转发流程

  • A.example.com->cloudfront->B.example.com->ip.ec2.port

注意事项

踩过的坑:

  1. v2ray-plugin报错 http: TLS handshake error from 64.252.173.97:23912: read tcp 172.21.0.3:443->64.252.173.97:23912: read: connection reset by peer
    • 原因为2层(EC2,cloudfront)TLS证书不一致; 第一个想法就是将两个证书整成一致,然后cloudfront就上传"Let’s Encrypt自签的证书,发现使用自上传的证书cloudfront根本不转发数据了;得出一个结论:cloudfront必须使用它请求生成的tls证书;
    • 解决方案:A.example.com->cloudfront->ip.ec2.port转发流程修改为A.example.com->cloudfront->B.example.com->ip.ec2.port
  2. v2ray-plugin报错not found in 'Sec-Websocket-Version' header
1
cloudfront ws一直是v2ray.com/core/transport/internet/websocket: failed to convert to WebSocket connection > websocket: unsupported version: 13 not found in 'Sec-Websocket-Version' header
  • 原因是cloudfront没有配置转发HTTP请求头,CloudFront 预设并不会转发所有的 HTTP request headers, 有些 request headers 在经过 CloudFront 之后就被丟掉了导致 v2ray 无法识别到必要的数据。 需要更改 origin request policies 為 Managed-AllViewer,這樣它才會轉發所有的 headers。
- 解决方案:cloudfront设置源请求策略为```Managed-AllViewer```
  1. cloudfront转发数据到源失败,解决方法是需要更改行为策略->缓存策略名称(Managed-CachingDisabled)->源请求策略名称(Managed-AllViewerExceptHostHeader)
    • 源服务器没有接收到数据,错误的提示:
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      
      root@localhost ~ # curl -v  https://proxy.example.com
      * About to connect() to proxy.example.com port 443 (#0)
      *   Trying 13.225.103.85...
      * Connected to proxy.example.com (13.225.103.85) port 443 (#0)
      * Initializing NSS with certpath: sql:/etc/pki/nssdb
      *   CAfile: /etc/pki/tls/certs/ca-bundle.crt
        CApath: none
      * SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
      * Server certificate:
      *       subject: CN=proxy.example.com
      *       start date: Apr 15 00:00:00 2023 GMT
      *       expire date: May 14 23:59:59 2024 GMT
      *       common name: proxy.example.com
      *       issuer: CN=Amazon RSA 2048 M01,O=Amazon,C=US
      > GET / HTTP/1.1
      > User-Agent: curl/7.29.0
      > Host: proxy.example.com
      > Accept: */*
      >
      < HTTP/1.1 404 Not Found
      < Content-Length: 0
      < Connection: keep-alive
      < Date: Sat, 15 Apr 2023 06:43:51 GMT
      < X-Cache: Error from cloudfront
      < Via: 1.1 69b8510b9be29c1f776639b7e7318dac.cloudfront.net (CloudFront)
      < X-Amz-Cf-Pop: HKG60-C1
      < X-Amz-Cf-Id: -Sm_h3IyQgK6sHFS28lv9leV321FbRd0UiJF5ZlqwJ2bofBw2Uqu9g==
      <
      
    • 正确的路由出现Bad Request提示:
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      
      root@localhost ~ # curl -v   https://proxy.example.com
      * About to connect() to proxy.example.com port 443 (#0)
      *   Trying 13.225.103.32...
      * Connected to proxy.example.com (13.225.103.32) port 443 (#0)
      * Initializing NSS with certpath: sql:/etc/pki/nssdb
      *   CAfile: /etc/pki/tls/certs/ca-bundle.crt
        CApath: none
      * SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
      * Server certificate:
      *       subject: CN=proxy.example.com
      *       start date: Apr 15 00:00:00 2023 GMT
      *       expire date: May 14 23:59:59 2024 GMT
      *       common name: proxy.example.com
      *       issuer: CN=Amazon RSA 2048 M01,O=Amazon,C=US
      > GET / HTTP/1.1
      > User-Agent: curl/7.29.0
      > Host: proxy.example.com
      > Accept: */*
      >
      < HTTP/1.1 400 Bad Request
      < Content-Type: text/plain; charset=utf-8
      < Content-Length: 12
      < Connection: keep-alive
      < Sec-Websocket-Version: 13
      < X-Content-Type-Options: nosniff
      < Date: Sat, 15 Apr 2023 06:52:06 GMT
      < X-Cache: Error from cloudfront
      < Via: 1.1 4466aaf3ba3ee7921322175dc8537b7a.cloudfront.net (CloudFront)
      < X-Amz-Cf-Pop: HKG60-C1
      < X-Amz-Cf-Id: BpS3Gy7MhRdnx6qZ28HUxaD1CyUyOfH4bN3jStHo2PLKnh0SBuRIAg==
      <
      Bad Request
      * Connection #0 to host proxy.example.com left intact
      

参考链接:

kelleygo
随笔记录,为技术沉淀.
目录
相关文章
小米路由器开发板
小米路由器开发板环境制作 准备条件 a.小米路由器型号要符合支持开发板,参考下图; b.下载开发板固件(与路由器型号匹配):选择下载>ROM>小米路由器3 下载小米路由器3 开发版(miwifi_r3_firmware_e9f31_2.27.120.bin) http://miwifi.com/miwifi_download.html 升级固件 步骤一 路由器初始管理平台地址:http://192.168.31.1。登陆小米路由器的web界面,进入后台。选择手动升级,上传开发版固件(miwifi_r3_firmware_e9f31_2.27.120.bin)点击升级,等待5分钟左右就会自动升级完成。wifi的ssid和密码仍然保持不变。 步骤二 a.绑定路由器到自己的小米账号 打开小米路由器的web界面,使用微信扫描登录页面的二维码安装miwifi 登录后页面提示小米路由器3(R3) MiWiFi 开发版 2.27.120,表示安装成功。 安装ssh并登录到终端 必须升级固件后才开始操作安装SSH,满足条件:安装固件:1. 开发版 2.27.120;2. 用户已经绑定路由器到自己的小米账号 获取ssh密码 访问:https://d.miwifi.com/rom/ssh 并登录以上的网页。网页上展示了root的密码和开启SSH的工具包,下载工具包,将下载好的文件移植到U盘,保证U盘里面的文件名为miwifi_ssh.bin。 注意事项: 使用chrome下载工具包可能会被拦截,请使用其他浏览器下载。 安装步骤: 1. 请将下载的工具包bin文件复制到U盘(FAT/FAT32格式)的根目录下,保证文件名为miwifi_ssh.bin; 2. 断开小米路由器的电源,将U盘插入USB接口; 3. 按住reset按钮之后重新接入电源,指示灯变为黄色闪烁状态即可松开reset键; 4. 等待3-5秒后安装完成之后,小米路由器会自动重启,之后您就可以尽情折腾啦 :) 使用SSH进入终端 连接小米路由器WIFI ,在终端输入:ssh root@192.168.31.1;SSH密码在页面查看(https://d.miwifi.com/) 下载潘多拉固件 访问:https://opt.cn2qq.com/padavan/ 搜索 MI 打开小米路由器3的固件并下载。 将下载的MI-3_3.4.3.9-099.trx 放入U盘根目录,名字不要随意更改,保证为:MI-3_3.4.3.9-099.trx;插入U盘到路由器,然后重启; 刷入潘多拉固件 上传下载的固件到路由器的/tmp目录下:
2024-8-21
使用cloudflare转发ssh端口
Cloudflare Tunnel cloudflare 提供的免费加密通道,通过 cloudflare 的 cnd 访问部署在内网的服务,比如 web,ssh,smb,tcp 等。 其工作方式类似于 frp,可以将本地服务发布到公网。只不过 frp 所需的服务器 IP 在 Cloudflare Tunnel 中变成了 Cloudflare 提供的节点。 相比于 frp 省去了服务器的成本。 1.准备 1.1 先决条件 必须需要一个 cloudflare 账号,以及开通 cloudflare zero trust。 cloudflare:https://www.cloudflare.com/ zero trust: https://one.dash.cloudflare.com/ 在你的需要内网穿透的设备上安装 cloudflared(cf 的本地 cli 客户端) ubuntu/centos amd64架构 curl -L 'https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64' -o /usr/bin/cloudflared && chmod +x /usr/bin/cloudflared arm64 curl -L 'https://github.
2022-7-21
cn博客添加音乐组件
1. 博客底部添加音乐组件 音乐效果 1.1 直接上代码示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <!-- 为博客底部添加音乐组件 --> <div id="player" class="aplayer"></div> <link href="https://files.cnblogs.com/files/shwee/APlayer.min_v1.10.1.css" rel="stylesheet"> <script src="https://files.
2022-5-21
生成HTTPS证书
生成HTTPS证书 1. 使用loge命令的方式生成HTTPS证书 参数说明: *.domain.com 替换为你的域名,支持所有子域名 – dns 是指域名在哪个云厂商,支持的云厂商有alidns/cloudflare aws;详细参考github官方文档 CLOUDFLARE_EMAIL="xx@gmail.com" \ CLOUDFLARE_API_KEY="xxx" \ lego --email "xx@gmail.com" --dns cloudflare --domains "*.domain.com" run 2 使用certbot的方式生成HTTPS证书 xx.domain.com 替换为你指定的子域名,只支持单个子域名 sudo certbot certonly --agree-tos --email xx@gmail.com --webroot -w /var/lib/letsencrypt/ -d xx.domain.com 3.检查HTTPS证书是否生效 cfssl-certinfo -domain xx.domain.com:443 4 参考文档: 使用certbot的方式生成HTTPS证书 使用lego手动生成tls证书参数文档
2022-3-21
seo网站搜索优化
1. seo网站搜索优化 搜索排行问题,主要是两方面优化方向: 第一是外链引用 第二是让搜索引擎的爬虫能收录/分析页面中的文本 技术相关的是第二,针对技术上的解决方案: 分析是否指定的浏览器才能展示结果,比如google游览器能正常访问网页,IE游览器访问 404,这样会影响搜索引擎的爬虫对真实内容的爬取,搜索引擎收录到这样的页面,一个相关的词都没有,搜索索引是没法建立的。解决方案是去掉这个判断逻辑。 网站是动态内容,且没有提供sitemap文件。这样的话,意味着即便没有第一个问题,搜索引擎也只会收录到了根页面,其它主页面、各个产品页,是不可能被收录到的,关键词索引也无从建立。解决方案是通过工具自动/手动生成一个根目录sitemap文件,和前端页面一起部署。 在网关title加上name为keywords和description 以及对应的content描述 示例: 1 <meta name="keywords" content="LoRaWAN,LoRaWAN module,LoRaWAN gateway,LoRaWAN 解决方案"><meta name="description" content="...."> 通过Google/百度站点管理工具分析数据,通过此分析 官网相关的关键列表、搜索率、点击率等指标在一定时间范围内的变化,一个是看之前是什么状态,另外一个 要看解决了以上3个问题后,后面有没有得到改进。 2. 解决方案 目的: 提交seo收录,sitemap站点地图,将robots.t文件和sitemap.xml文件放到网站根目录下,示例文件如下: 蜘蛛访问站点权限 robots 站点sitemap地图 sitemap 通过站长工具分析网关排名以及关键字索引 百度站长 google站长 通过模拟器分析网站关键字收录情况 蜘蛛模拟-Screaming Frog SEO Spider 3 参考 seo优化
2022-3-10