自建Nginx Proxy Manger的替代品—Zoraxy
前一阵子,看到了一个新的反向代理项目—Zoraxy。当时简单试用了一下,给我的感觉是这个反向代理类似Nginx Proxy Manger。
这个项目也支持docker部署,添加反向代理规则也在一个后台管理界面中可视化完成。
Zoraxy部署完成的效果如下图所示:
1、自建步骤
1.1、前提条件
安装完docker和docker compose。
没安装的话,可以用一键脚本安装一下:
|
|
1.2、自建zoraxy
|
|
添加以下内容:
|
|
让claude3来简单介绍一下上述配置。
一开始先开启容器内的8000端口至宿主机的8005端口映射,等到配置好了域名访问zoraxy后台管理界面后,可以去除掉该端口映射。
更多有关zoraxy的docker配置信息,请见:zoraxy/docker。
接着执行以下命令来启动并在后台运行容器。
|
|
这时在浏览器的地址栏输入:http://your_vps_ip_address:8005
来访问zoraxy的后台管理界面。【注:vps开启防火墙的话,记得先暂时放行一下8005端口,等到zoraxy后台管理界面设置了域名访问后,再删除该端口的放行】
输入用户名和密码来创建账户。
紧接着输入刚才创建账户的用户名、密码来登陆zoraxy的后台管理界面。
成功进入zoraxy的后台管理界面。
1.3、zoraxy配置
在后台管理界面的Status选项页,将Global Settings中的入栈端口修改为443,下面这些的选项都勾上。
- Use TLS to serve proxy request(使用TLS来服务代理请求)
- Enable HTTP server on port 80(在80端口启用HTTP服务器,仅当启用TLS且未使用80端口时适用) (Only apply when TLS enabled and not using port 80)
- Force redirect HTTP request to HTTPS(制将HTTP请求重定向到HTTPS)
Default Site选项页不动,当遇到未知主机名时,让zoraxy使用内置的静态页面来处理请求。
静态页面,可以在Static Web Server处寻得。
默认的静态页面如下图所示:
接下来配置zoraxy后台管理界面以域名的形式访问。以域名zoraxy.example.com
为例。
首先来到cloudflare的域名example.com
的DNS记录界面,添加一条A记录,记录名为zoraxy,记录值为zoraxy所在服务器的ip地址。
紧接着回到zoraxy后台管理界面的Create Proxy Rules选项页。
Matching Keyword / Domain,填写zoraxy.example.com
;
Target IP Address or Domain Name with port,填写zoraxy:8000
;
勾选Require Basic Auth,输入basic auth验证的用户名和密码。
点击Create Endpoint。
紧接着,来到TLS/SSL certificates选项页。
下拉到底部,填写ACME Email为自己的常用邮箱。点击Save Settings保存设置。
紧接着,点击底部的Open Acme Tool,填写ACME Email为自己的常用邮箱,开启Enable Certificate Auto Renew按钮,在Generate New Certificate下的Domain(s)输入框里面填写zoraxy.example.com
,点击Get Certificate来获取证书。
打开HTTP Proxy选项页,点击zoraxy.example.com
,来以域名的形式访问zoraxy的后台管理界面。
输入basic auth所需的账号密码来通过验证。
如果basic auth不生效的话,可以来到HTTP Proxy选项页,编辑刚才创建的反向代理记录。
点击Basic Auth的Edit Credentials,在其中的Basic Auth Credential添加验证所需的用户名和密码。
通过basic auth后,就可以以域名的形式访问到zoraxy的后台管理界面了。
为了安全考量,应尽可能少地向外界暴露端口。我们可以修改zoraxy的compose.yml文件,删除其中的8005:8000/tcp的端口映射,紧接着使用docker compose down && docker compose up -d
命令来重新部署zoraxy容器。
其他的选项页简单罗列一下:
-
Virtual Directory提供了路径映射等功能,可以自行琢磨折腾。
-
TCP Proxy有点中转的意味,我还没用过。
-
Redirection Rules用于添加重定向规则。
-
Access Control用于访问控制,提供了比如国家黑名单等实用的功能。当然如果你有这方面的需求,我更建议你在Cloudflare处设置相应的WAF规则。
-
Global Area Network,还没用过。
-
Service Expose Proxy,该功能还在开发中。
-
Uptime Monitor,检查反向代理目标的在线率。
-
Network Tools,提供了常用的网络工具,如查询域名whois等。
-
Statistical Analysis,提供了网站的访问数据统计信息的展示。
-
Utilities,提供了修改密码、工具箱等功能
1.4、为其他服务提供反向代理
以最近看到的一个仪表盘项目——glance为例子。
官方给出的docker compose文件如下:
|
|
可以将其改为以下配置:
|
|
将glance服务加入到zoraxy_default的外部网络中,这样子zoraxy可以通过glance:8080来获取到glance服务。具体的解释可以见claude3的详细解释。注:其中的zoraxy_default网络由zoraxy默认创建,可以通过docker network ls
命令来查得。
可以参考nginx proxy manager的Best Practice: Use a Docker network的知识点来对照学习。
紧接着在glance的compose.yml的同级目录中创建glance.yml文件,具体的配置见Preconfigured page。
具体的目录结构如下:
在glance文件夹下执行docker compose up -d
启动并在后台运行容器。
接下来的操作,跟刚才创建代理规则一样。
-
先在Cloudflare的域名DNS记录中添加一条A记录,记录名为
glance
,记录值为example.com
。 -
紧接着来到zoraxy的后台管理界面的Create Proxy Rules选项页,Matching Keyword / Domain填写
glance.example.com
;Target IP Address or Domain Name with port填写glance:8080
;点击Create Endpoint,来完成代理规则的创建。 -
这时候,右下角有一个申请SSL证书的弹窗,直接点击申请。
-
申请完毕后,访问
glance.example.com
,成功获取到glance服务。如果你要自定义glance仪表盘的话,可以修改glance.yml文件,紧接着再执行docker compose down && docker compose up -d
命令重新部署glance即可。
2、总结
zoraxy这个反向代理基本满足docker服务的反向代理需求,类似nginx proxy manager,如果自己有一台还没有安装反向代理的vps,可以试一试。
当然到目前为止,我使用过的反向代理中,最简单便捷的还得是caddy,自动https+简单的配置,用过caddy的都说好。
最后附上zoraxy作者对于自己项目的介绍,可以听听作者的使用姿势。
今天写这篇博文的实验机器来自techvm,国人oneman,我看techvm的老板跟最近跑路的图安云纠缠不清,故昨晚我将techvm大鸡上的服务全部迁移到了rackerd的黑五机器上。今晚写完博客演示完,让该月付鸡自动过期。
虽然4核、12GB内存、50GB硬盘、9929线路的月付35人民币vps看起来很诱人,但是图安云出事后,我就再也不相信国人oneman了,当然也不相信老外oneman,买vps还得找准口碑好的商家,以及大厂的机器。
我原本有图安云的美西133套餐+新年299套餐,所幸5月11号,两个套餐的部分退款我都收到了,再加上图安云的机器上没啥重要数据,这次经历就当为自己敲响警钟吧,做理智的mjj,远离oneman方为正道!
文档信息
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享4.0许可证)