背景
笔者申请了华为云服务器,搭建了ubuntu系统,部署了一些云服务,因安全原因需要搭建反向代理,以实现HTTPS访问。
可选的反向代理一般用nginx,考虑到笔者有图形化配置诉求,且nginx功能单一,不支持DDNS,端口转发这样常见的运维工具,所以笔者倾向于安装Linux面板。
笔者尝试安装宝塔面板,发现购买的华为云服务器配置太低端(2C2G),资源占用过多,故寻求其他解决方案,自然就想到了Lucky,加上有路由器上部署Lucky的经验,所以,最终就考虑使用Lucky
官方文档
教程文档可以从官方网站获得 :www.lucky666.cn
安装Lucky
在Ubuntu上安装Lucky可以通过官方提供的安装脚本完成。运行以下命令下载并执行安装脚本:
curl -sSL https://raw.githubusercontent.com/gdy666/lucky/main/install.sh | sudo bash
但安装后出现仅支持ipv6访问的问题,所以,采用docker部署:
docker run -d --name lucky \
--restart=always \
--publish 16601:16601 \
--publish 30000-30005:30000-30005 \
-v /opt/lucky:/goodluck \
gdy666/lucky
安装完成后,Lucky会自动以容器的方式启动
其中16601是lucky的后台管理界面端口
30000-30005是笔者打算暴露到公网的端口,也是打算做反向代理的公网端口,需要打开云服务器的防火墙规则,否则无法暴露到公网
假设笔者在3000端口部署了一个服务,先配置华为云的3000端口防火墙,然后用http://云服务器ip:3000,确保访问没有问题;然后关闭华为云的3000端口防火墙
然后在lucky中添加一条web服务规则,把http://公网IP:30000,反向代理到http://172.17.0.1:3000/
其中30000是外网端口,因为构建lucky容器时已经做了端口映射,所以lucky容器已经可以接收到来自于外网30000端口的请求。
因为创建容器默认是使用桥接网络,所以docker会给容器分配一个172.17.0.0/16网段的ip,默认网关是172.17.0.1,所以172.17.0.1这个地址指向了宿主机,http://172.17.0.1:3000/这个地址就是笔者在宿主机上部署的web服务,172.17.0.1这个地址可以通过inspect命令获取
docker inspect 容器名称

注意:在openwrt这类路由系统上,容器可以直接访问宿主的端口,Ubuntu不行,需要添加防火墙规则:
sudo ufw allow from 172.17.0.0/16 to any port 3000
这样就实现了在docker容器中把外网30000端口请求反向代理到了宿主机的3000端口上,amazing!
下一步:添加https证书,要求外网的30000请求必须走TLS认证
下一步:在lucky中再添加一条规则,把http://公网IP:30000重定向到https://公网IP:30000

至此,教程结束,Enjoy!

5200

被折叠的 条评论
为什么被折叠?



