一般家宽有公网IP但是运营商会封80和443端口,某些NAT服务器只有ipv4的端口映射或者没有80和443端口的ipv6,目前使用了cloudflare实现了不添加端口号访问非80端口的web服务,并且cloudflare还可以实现ipv4访问ipv6的服务。
以下操作的主机为有20个10000以上可映射端口(ipv4)以及一个独立的ipv6(没有80,443,8080,8443端口)的NAT服务器,有一个8888端口的OJ服务,需要通过hydro.awking.cn域名直接访问这个服务
注意:使用的域名需要托管到Cloudflare
配置Nginx服务器
首先,在服务器端安装NGINX,我使用的是1panel一键安装的Nginx Proxy Manager(后面简称NPM),http端口设置为1080,https设置为1443(8080和8443也被封了)后台端口设置为81,也可以自己使用docker安装,这里不用1panel自带的反向代理的因为这台服务器OpenResty申请证书会失败。
安装完成后可以访问ip:1080
申请SSL证书
然后访问IP:81登录后台,NPM后台默认邮箱admin@example.com,密码changeme,登录后需要修改邮箱和密码,然后按照下面的步骤进行
Cloudflare的token获取
登录Cloudflare后选择你的域名
然后下拉找到获取你的API令牌,然后点击创建令牌,使用第一个模板
区域选择自己的域名,也可以选择所有区域(出于安全不建议全区域)
然后创建并复制token粘贴到之前需要token的位置
添加反向代理
在NPM主页中找到Proxy Hosts然后添加反向代理
并打开SSL
需要注意的是上面IP地址的填写,如果你的NPM使用的网络不是Host模式,那么IP不能填写127.0.0.1,可以直接填写你的外网IP地址,或者你服务器指定的内网IP地址
隐藏端口
将域名解析到该服务器ipv6地址上,记得要开启黄色的小云朵
然后在左侧边栏中找到规则->Origin Rules
创建规则,名字自己,字段选择主机名,运算符选择等于,值输入反向代理的域名,下面的端口重写到自定义的https端口,我自定义的是1443,填写完成后部署即可
部署完成后等待一段时间,即可通过域名不加端口号访问非80 443端口服务,同时虽然服务器的外网地址是ipv6,通过Cloudflare代理,在没有ipv6只有ipv4的情况下也能够进行访问