标签 ACME 下的文章

别再用 Nginx 配置折磨自己了,推荐 Zoraxy 让你 3 分钟搞定反向代理

免责声明:本文中信息来源于网络,作者不保证其绝对正确性。读者在依据本文内容做出任何决策或行动前,应自行进行充分的调查与核实。对于因使用本文内容而产生的任何直接或间接损失,作者不承担任何责任。

本文为专业文章, 适合运维、开发、self-hosted 需求人员观看。


你有没有这种经历?

新部署了一个服务,要去改 Nginx 配置文件。再部署一个,又要改。改完还得nginx -s reload

有时候改错了语法,reload 失败,服务全挂了。

这时候你突然意识到:学 Nginx 配置语法的时间,比学做饭的时间还长。

别问我是怎么知道的。

Zoraxy001

现状

反向代理在运维、开发、self-hosted  场景中经常用到,目前 Nginx 、Caddy 、Traefik 是主流选择。它们有个共同点:需要改配置文件

语法要记,改完要重载,错了要排查。对于不想折腾配置文件的人来说,这门槛不低。

今天介绍一个不一样的选择:Zoraxy 最大特点是全 UI 操作,支持动态应用规则的反向代理。

1

4

Zoraxy 是什么

Zoraxy 是一款基于 go 编写的动态反向代理工具。

最大的特点:Web UI 管理,零配置文件

项目简介里写得很直白——这可能是最适合新手的反向代理管理器之一。

想到了 python 的 solgan: 人生苦短,我用 python

它不是药,但可能治好你的"配置文件恐惧症"。

让我想起一个笑话。

有人问医生:"我每天都要吃止痛药才能工作,怎么办?"

医生说:"那你就别工作了。"

Zoraxy 就是那个让你不用"吃止痛药"的选择——你不需要每天和配置文件较劲。

能做什么

  • 反向代理:HTTP/2 、WebSocket 自动代理、虚拟目录、别名主机、自定义请求头、负载均衡。

  • SSL 证书:ACME 自动申请、Let's Encrypt 支持、DNS Challenge 。

  • 访问控制:IP 黑白名单、国家/地区封禁。

  • 流代理:TCP/UDP 代理。

  • 监控:集成 Uptime Monitor ,实时主机健康检查。

  • 其他:Web SSH 终端、插件系统、实时流量分析。

2
3
4
5
6
7
8
9

快速上手

安装

因为基于 go 编写,基本上主流系统上直接安装编译好的文件就成。以 Linux 为例:

wget https://github.com/tobychui/zoraxy/releases/latest/download/zoraxy_linux_amd64

chmod +x ./zoraxy_linux_amd64

sudo ./zoraxy_linux_amd64

启动后访问 http://localhost:8000 进行初始设置(无需配置文件,全部操作在 UI 中完成)。

就这么简单。

配置反向代理

登录 Web 界面后,添加反向代理规则很简单:

  1. 填写域名(比如 ftp.server.local, 注意提前配置好你的 dns 指向)
  2. 填写目标地址(比如 http://192.168.1.100:3000
  3. 保存就动态生效了

就这么简单。

zoraxy004_createrules

zoraxy004_http

SSL 证书

Zoraxy 内置 ACME 客户端功能,支持 Let's Encrypt 等服务商证书的自动申请:证书自动续期,不用担心过期。

下面以自定义 ACME 服务器为例,展示 ssl 证书的申请。

zoraxy005_ssl

Uptime Monitor

Zoraxy 还集成了主机健康检查功能。

实时监控服务可用性,支持 HTTP/TCP/UDP 检查,失败会告警。

在"Uptime Monitor"页面添加监控目标就行。

和 Nginx/Caddy 的区别

特性 Zoraxy Nginx Caddy
配置方式 Web UI 配置文件 配置文件
动态更新 ✅ 即时生效 ❌ 需 reload ✅ 自动
SSL 证书 ACME 自动 需手动配置 ACME 自动
学习曲线
插件系统
Uptime Monitor ✅ 内置

核心差异很明显:Zoraxy 全部通过 Web 界面操作,改完立即生效,不用重载服务。

不想记配置文件语法的话,这是最大的优势。

什么时候用 Zoraxy

总体来说,zoraxy 十分适合中小企业内部, 家用 self-hosted 场景。

人生苦短, 我用  zoraxy

适合

  • 家用 lab/自托管多个服务

  • 不想折腾配置文件

  • 需要快速添加/删除代理规则

  • 需要基本的健康检查

  • 新手入门反向代理

不适合

  • 需要极高性能( Nginx/Traefik 优化更好)

  • 需要复杂的高级配置

  • 配置即代码( IaC )需求

其他信息

Zoraxy 是开源项目,AGPL 许可。

因为 go 的特性支持跨平台:Windows 、Linux 、macOS 、ARM 设备、RISC-V 。也集成到 TrueNAS 、Umbrel 、YunoHost 等应用市场。

写在最后

Nginx/Caddy 依然是优秀的选择。

但如果你厌倦了改配置文件,想要更简单的管理方式,或者刚开始接触 self-hosted ,可以试试 Zoraxy 。

就像那个老笑话:当手里拿着锤子时,看什么都像钉子。

但有时候,你需要的不是更好的锤子,而是一把螺丝刀。

Zoraxy 就是那把螺丝刀——它不是要取代你的锤子,而是给你一个不同的选择。

希望小编文章能帮助到大家,欢迎关注本公众号;有问题留言交流。

其他

欢迎关注本公众号其他社媒平台

link_logo

点击以下链接关注我的数字名片!

https://muselink.cc/hamisay

"如果您觉得这篇文章对您或您的朋友有所帮助,不妨动动手指,关注我们、点赞并分享到朋友圈,让更多人受益。您的每一次互动都是对我们最大的支持和鼓励!"

前提:

  1. 有一个基于 Docker Compose 编排,且包含 Nginx 部署的前端服务项目。
  2. 有一个域名(证书会基于域名自动申请)。

配置流程:

  1. 修改 docker-compose.yml 文件,确保前端服务映射了 443 端口
    示例:
services: ruoyi-ui: container_name: ruoyi-ui build: context: . # Dockerfile.ui 及 nginx.conf 所在上下文路径 dockerfile: Dockerfile.ui ports: - "${FRONTEND_PORT}:80" - "443:443" # https端口 depends_on: xxx-service: condition: service_started # 后端服务及其它服务配置 xxx-service: ... 
  1. 在 Dockerfile.ui 中使用正确的基础镜像,需要支持 ACME 的 nginx 镜像,如:ghcr.io/3az7qmfd/ngacme:main:
FROM ghcr.io/3az7qmfd/ngacme:main

# 移除 Nginx 默认配置
RUN rm /etc/nginx/conf.d/default.conf

# 复制自定义的 Nginx 配置文件
COPY ./nginx.conf /etc/nginx/conf.d/default.conf

# 从构建阶段复制构建好的静态文件到 Nginx 托管目录
COPY ./dist /usr/share/nginx/html

# 暴露 Nginx 端口
EXPOSE 80

# Nginx 默认会启动,也可以指定 CMD
CMD ["nginx", "-g", "daemon off;"]
  1. nginx.conf 配置自动获取证书
# DNS 解析器(用于访问 ACME 服务器,推荐用可靠的如 Cloudflare 或 Google)
# 没有可用的 IPv6 出口时,可设置禁用ipv6:ipv6=off
resolver 8.8.8.8 1.1.1.1 ipv6=off valid=30s;

# ACME issuer 配置(这里用 Let's Encrypt 生产环境示例)
acme_issuer letsencrypt {
    uri         https://acme-v02.api.letsencrypt.org/directory;
    contact     xxx@qq.com;  # <----- 你的邮箱,用于通知
    state_path  /var/cache/nginx/acme-letsencrypt;  # 持久化存储路径,确保目录存在并可写
    accept_terms_of_service;
}

# 共享内存区(存储证书和挑战数据)
acme_shared_zone zone=ngx_acme_shared:1M;

server {
    listen 80;
    server_name xxx.com;  # 你的实际域名,证书会基于此自动申请

    # 可选:显式允许挑战路径
    # location /.well-known/acme-challenge/ { }

    location / {
        return 301 https://$server_name$request_uri;  # 重定向所有普通请求到 HTTPS
    }
}

server {
    listen 443 ssl; http2 on;
    server_name xxx.com;  # 你的实际域名,证书会基于此自动申请

    # ACME 自动管理证书
    acme_certificate letsencrypt;  # 使用上面定义的 issuer

    ssl_certificate       $acme_certificate;
    ssl_certificate_key   $acme_certificate_key;

    # 避免每次请求解析证书
    ssl_certificate_cache max=2;

    # 静态资源根目录(与原配置相同)
    root   /usr/share/nginx/html;
    index  index.html index.htm;

    # 处理前端 SPA 路由
    location / {
        try_files $uri $uri/ /index.html;
    }

    # API 请求反向代理
    location /api/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://xxx-service:8080/; # <---- 你的后端服务
    }

    # 错误页面
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # 其他 SSL 优化(可选推荐)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
}

参考连接:

  1. 以 Nginx 为反代服务端时以 Certbot 自动申请 HTTPS 证书的流程
  2. nginx-acme
    nginx-acme/README.md at main · nginx/nginx-acme · GitHub
  3. Module ngx_http_acme_module
    Module ngx_http_acme_module
  4. NGINX with ACME 模块 Docker 镜像
    Package ngacme · GitHub

📌 转载信息
转载时间:
2026/1/6 12:16:35