不通用解决域名使用非标准端口号的访问问题
本文最后更新于 285 天前,其中的信息可能已经有所发展或是发生改变。

前情提要

一直在想办法解决标准端口被封的问题,之前是琢磨出了使用CloudFlare的页面规则进行301重定向,来重定向到非标准端口号。详情参考不带端口号访问非标准端口域名。以下是简易流程图

例如我的博客就是在浏览器输入 blog.dswang.ga自动在CloudFlare CDN上重定向到 http://blog.dswang.ga:8880,然后访问我的内网web服务器,Nginx开启强制HTTPS,最后重定向到https://blog.dswang.ga:8443/ 。经过了多次重定向,其实很影响体验的,而且浏览器上还是会显示端口号。

当然体验不好更多的是因为免费账户分配的CDN节点不好,优化速度参考cloudflare自定义节点优化访问速度

那么有没有不会显示端口号的方法呢?当然有啊,不然我写这篇文章干什么,打字也好麻烦的。在Google搜索找到了这篇帖子CloudFlare Worker能转发非标准端口吗,其中第25楼回复

我也是看了好久才看懂该怎么用,多谢这位大佬!

建议看完再操作!正文开始,先看后赞!(不是

准备工作

服务端,也就是源站,我使用宝塔面板管理网站。

我这里准备三个域名做演示,分别是

ss.dswang.ga
test1.dswang.ga
test2.dswang.ga
你需要先将域名托管到CloudFlare,或者CF的第三方合作伙伴,参考我之前的文章。如果都不愿意,你可以关掉此页面了。获得域名,注册CloudFlare,安装宝塔等基础操作不再赘述。

添加Worker

如何添加Worker参考搭建基于Cloudflare Worker的短链接/短域名缩短服务

在左边框中粘贴 booster.js,可选更改Worker的名称。

basic

  • upstream: 协议、域、端口(可选)、路径(可选)。例子:https://www.math.ucla.edu/~tao/ #填写实际访问的域名+端口
  • mobileRedirect:自动将移动设备访问者重定向到移动优化的网站。#如果没有就填上面的链接

firewall #按需填写

  • blockedRegion:阻止来自特定区域的访问者。代码的完整列表:ISO 3166-1 alpha-2
  • blockedIPAddress:阻止来自特定 IP 地址的访问者。
  • scrapeShield:发现、检测和阻止内容刮擦。参考: 介绍刮擦

routes: 将国家/地区代码映射到特定的上游。代码的完整列表:ISO 3166-1 alpha-2示例:

routes: {
    FR: 'https://www.google.fr/',
    CA: 'https://www.google.ca/'
}
#这一段我们用不上,建议删掉

optimization #按需填写

  • cacheEverything:强制 Cloudflare 缓存此请求的响应,而不考虑响应标头。
  • cacheTtl: 强制 Cloudflare 使用特定的 TTL 缓存此请求的响应,而不考虑响应标头。
  • mirage:检测屏幕大小和连接速度,以最佳方式为当前浏览器窗口提供图像。
  • polish:自动优化您网站上的图像。可能的值是lossylosslessoff 。参考:Introducing Polish
  • minify:从 JavaScript、CSS 和 HTML 文件中删除不必要的字符。

这个脚本原本用来干什么的懂的都懂!

对于可以直接访问的域名

配置Worker

修改upstreammobileRedirect的值为实际访问的协议://域名:端口(可选)/路径(可选)

例如访问ss.dswang.ga这个域名,此时的访问简易流程图应该是

解释一下,ss.dswang.ga 这个域名是我的一个服务,用来提供免费节点,参考部署Proxypool自动抓取免费节点或者使用ProxypoolCheck代替Proxypool。本来是在服务器上使用Nginx反代本地12580端口,这个端口是开放的,所以不需要经过页面规则重定向。

原本这个脚本的作用就是这样,用来反代某些网站。但是这个脚本同时支持访问非标准端口,所以就有了下面的内容。

对于需要重定向到非标准端口的域名

这里使用宝塔面板新建一个站点演示。

现在宝塔不支持添加非标准端口,原因懂得都懂,什么时候开放限制也不知道。添加非标准端口的方法也简单,新建域名的时候带上就行,最少添加两个域名,而且只能添加CloudFlare支持的端口,原因后面讲

#Cloudflare支持的相关端口
#http端口        #https端口
80                443
8080              2053
8880              2083
2052              2087
2082              2096  
2086              8443
2095 

对于已经存在的站点,可以选择删除重建,删除的时候不要勾选数据库和目录,同时建议备份。然后新建站点选择之前的数据和目录。

不想删除也可以,在配置文件中添加新域名和端口,然后保存。

然后再在域名管理里添加域名+端口,此时8880端口会自动改成80,但实际上不影响使用。仅测试免费版7.4.7和7.4.6版,其他版本不知道。

编辑一下HTML文件。

关于配置SSL也不再赘述。

配置Worker

修改upstreammobileRedirect的值为实际访问的协议://域名:端口(可选)/路径(可选)例如这里填写 http://test2.dswang.ga:8880

例如访问 test1.dswang.ga 时的简易流程图

Worker拦截了请求自己处理

此时访问htts://test1.dswang.ga,Worker会反代http://test2.dswang.ga:8880的内容,然后返回到浏览器。

这就是为什么前面要至少添加两个域名的原因,因为test1.dswang.ga这个域名不可能访问自己, 那不成无限套娃了吗?禁止套娃!

查看结果

如何使用?

此时其实还是不能使用隐藏端口号的方式访问的,因为域名还没有指向Worker,有两种方式访问。如果看懂了我之前的文章那么这一步也很好理解。

第一种

在CloudFlare的DNS管理页添加新记录,比如添加test1cname,值为workers.dev域名。

我是使用的第三方管理,不能使用这种方式,就不演示了。推荐使用第二种方式。

第二种

在域名的Workers选项卡里添加路由

输入你希望浏览器显示的域名,Worker选择对应的Worker,点击保存。此时CloudFlare会拦截匹配的路由模式。

对于test1.dswang.ga这种可以不经过Worker处理的域名建议开启故障模式为继续,Worker免费额度用完后会略过Worker处理步骤自动访问http://test1.dswang.ga:8880,不会导致服务中断。

域名直接托管到CloudFlare的两种方法都可以使用,还是推荐使用第二种方式。

其他

对于WordPress这种网站程序还有点小问题,比如只有主页可以隐藏端口号,其他所有页面都不行,而且无法登录仪表盘。

主要原因在于仪表盘的设置>>常规选项卡,这里有两项,分别是WordPress地址(URL)和站点地址(URL)

其中站点地址是主页显示的地址,也是所有二级页面的地址,比如分类页面或者文章内容,不能改,如果不在意就无所谓。WordPress地址是后台地址。

以前是填写完整域名+端口,使用CloudFlare Worker之后就不行了。

临时的解决办法就是给后台分配另外一个域名,不与主页同域名,不走Worker。

如果URL修改错了可以去数据库改回来。

如果谁能解决这个问题请一定要告诉我!谢谢!

评论

  1. 柠檬的鱼
    Windows Edge 87.0.664.75
    9月前
    2021-1-12 19:03:45

    一个字,看不懂

    • 单身汪 博主
      Windows Edge 87.0.664.75
      9月前
      2021-1-13 23:48:34

      菜逼

      • 柠檬的鱼
        Windows Edge 87.0.664.75
        9月前
        2021-1-14 10:58:07

        [f=caidao]呸

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇