自建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许可证)























