反向代理

反向代理网站用于将外部请求转发到后端服务,常用于部署 Node.js、Go、Java、Python 等应用。
工作原理
用户请求 -> Nginx (反向代理) -> 后端应用 (如 localhost:3000)Nginx 接收用户的 HTTP/HTTPS 请求,然后将请求转发到指定的后端地址。
创建反向代理网站
- 进入 网站 页面
- 确保选中 反向代理 标签
- 点击 创建网站
配置项
- 名称:网站标识,如
myapp - 域名:绑定的域名,如
app.example.com - 端口:监听端口,默认 80
- 代理目标:后端服务地址,如
http://127.0.0.1:3000 - 备注:可选备注
代理目标格式
http://127.0.0.1:3000 # 本地服务
http://localhost:8080 # 本地服务
http://172.18.0.2:80 # Docker 容器
https://backend.internal # 内部 HTTPS 服务编辑反向代理网站
点击网站列表中的 编辑 按钮进入编辑页面。
可以在基本设置中将网站切换为 PHP 或纯静态类型。 域名、监听、文件等通用内容会保留;代理上游和代理规则会删除,并重新生成所选类型的配置。 切换前必须备份并记录代理配置。
域名和监听
配置网站的域名和监听端口,支持添加多个域名和端口。
- 域名:可添加多个域名
- 监听地址:可配置多个端口,支持 HTTPS 和 QUIC(HTTP3)
上游配置
上游(Upstream)定义了后端服务器地址,支持配置多个后端实现负载均衡。
- 上游名称:上游的标识名称
- 负载均衡算法:对于 Nginx,支持轮询(默认)、
least_conn、ip_hash、hash和random;对于 Apache,支持轮询(默认)、最少繁忙和按流量分配 - 保持连接数:与后端维持的长连接数量
- DNS 解析器:自定义 DNS 解析器及解析超时时间(仅 Nginx)
点击 添加服务器 按钮可以添加后端服务器:
- 服务器地址:后端服务器地址,如
127.0.0.1:8080 - 选项:可选参数,如
weight=5(权重)、backup(备用服务器)等
代理配置
配置代理行为和请求头转发。 每条代理规则将一个 location 映射到一个后端。
- 匹配类型: 精确匹配(
=)、优先前缀(^~)、普通前缀、区分大小写正则(~)和不区分大小写正则(~*)。 - 匹配表达式: 要匹配的 URL 表达式。
- 代理地址: 上游名称或完整后端地址,例如
http://127.0.0.1:8080、http://upstream_name。 - 代理 Host: 发送给后端的
Host请求头,默认$proxy_host,也可从代理地址自动提取。 - 启用缓存: 是否使用代理缓存。
- 启用缓冲: 是否缓冲响应;AI 等流式应用建议关闭,否则可能影响流式输出。
- 代理 SNI: HTTPS 后端使用的 SNI。
- DNS 解析器: 自定义 DNS 服务器和解析超时,仅 Nginx 支持。
- 自定义请求头: 添加或修改传给后端的请求头。
- 响应内容替换: 替换响应正文中的字符串。
代理高级设置
Nginx 的每条代理规则还提供 高级设置面板:
- HTTP 版本:后端协议版本(HTTP/1.0、HTTP/1.1 或 HTTP/2)
- 最大请求体:此规则允许的最大请求体大小
- 超时设置:连接、读取和发送超时
- 重试设置:上游失败时的重试条件、最大次数和重试超时
- SSL 后端验证:验证后端证书(仅 HTTPS 后端显示)
- 响应头:隐藏或添加响应头
- IP 访问控制:允许或拒绝此规则的访问者 IP/CIDR
重定向
重定向标签页中的规则会在请求进入代理前执行, 可拖动调整顺序。
- 重定向类型:
- URL 重定向(
url):将来源路径重定向到目标路径 - 主机重定向(
host):将来源主机重定向到目标 URL,例如强制将www跳转到主域名 - 404 重定向(
404):将原本返回 404 的请求重定向到目标 URL
- URL 重定向(
- 状态码:
301、302、307或308,默认值为 308 - 来源: URL 类型填写来源路径,Host 类型填写来源主机;404 类型无需填写。
- 目标: URL 类型填写目标路径,Host 和 404 类型填写目标 URL。
- 保留 URI: 保留原请求路径和查询参数并追加到目标地址。
Nginx 接收用户的 HTTP 或 HTTPS 请求,再转发到指定后端地址。
HTTPS 标签页用于管理网站 TLS。 网站已绑定证书时,会显示有效期、签发者和覆盖域名。
- 总开关:为此网站启用或关闭 HTTPS。 启用后自动增加
443监听,Nginx 还会增加quic;关闭后移除443监听,并清除ssl和quic标记 - 使用已有证书: 从证书管理中选择证书,自动填入证书和私钥。
- HSTS: 启用 HTTP 严格传输安全。
- HTTP 重定向: 强制 HTTP 跳转到 HTTPS。
- OCSP Stapling: 启用 OCSP 装订。
- TLS 版本: 可选择 TLS 1.0、1.1、1.2 和 1.3。
- 证书 / 私钥:直接粘贴 PEM 证书和 KEY 私钥内容
一键签发证书
网站至少绑定一个域名后,可以通过底部的 一键签发证书为这些域名申请免费证书。 存在 *.example.com 等通配符域名时,需要选择已经在证书管理中配置的 DNS 提供商,通过 DNS 验证签发。
网站高级设置
高级设置 选项卡将多个站点级选项整理为可折叠面板。
访问统计
仅 Nginx 支持。 启用 访问统计后,可在网站统计页面查看该网站数据。
日志设置
- 访问日志:选择 关闭(
off)、默认路径或输入自定义路径 - 错误日志:选择 关闭(
off)、默认路径或输入自定义路径
设置有效日志路径后,编辑器会显示实时 访问日志和 错误日志标签;底部 清空日志会截断当前查看的日志文件。
限流
打开 启用限流开关;只有启用后才显示下面的限制字段。
- 并发限制: 整个网站的最大并发连接数,
0表示不限。 - 单 IP 限制: 每个访问 IP 的最大并发连接数,
0表示不限。 - 速率限制: 单个请求的传输速率,单位 KB,
0表示不限。
真实 IP
当 AcePanel 本身位于 CDN 或 Frp 后方时识别真实访问者 IP;此功能不同于向后端转发请求头,参阅转发真实 IP。
- 启用:开启或关闭此功能
- IP 来源:可信上游 IP 或 CIDR,每行一个,例如
127.0.0.1、10.0.0.0/8。 使用 Frp 时填写 Frp 地址,使用 CDN 时填写 CDN 地址段。 不确定时可以使用0.0.0.0/0或::/0,但这不安全。 - IP 请求头: 例如
X-Real-IP、X-Forwarded-For、CF-Connecting-IP、True-Client-IP、Ali-Cdn-Real-Ip或EO-Connecting-IP,也支持自定义。 - 递归: 在
X-Forwarded-For中递归查找真实 IP。
基本认证
在 用户凭据中添加用户名和密码后,访问网站前必须通过 HTTP Basic Authentication; 列表为空时不启用认证。
常见场景
Node.js 应用
node app.js # 监听 3000 端口代理目标:http://127.0.0.1:3000
Docker 容器
后端位于 Docker 容器时,可以使用容器 IP,或在同一 Docker 网络中使用容器名称。
代理目标:http://container-name:port 或 http://container-IP:port
多后端负载均衡
在上游配置中添加多个后端地址以实现负载均衡。
在上游配置中添加多个后端地址,再将代理目标设为 http://upstream-name。
常用配置
WebSocket
反向代理默认支持 WebSocket,无需额外配置。
当 AcePanel 位于 CDN 或 Frp 后方时,用于识别真实访问者 IP。该功能与向后端转发请求头不同。
AcePanel 会自动配置以下请求头,把用户真实 IP 传给后端:
X-Real-IPX-Forwarded-ForX-Forwarded-Proto
NOTE
这里介绍的是把访问者 IP 转发给后端服务,与高级设置(站点级)中的 真实 IP 功能不同。 该功能用于 AcePanel 位于 CDN 或 Frp 后方时恢复 真实访问者 IP,即读取可信上游请求头,而不是代理自身 IP。 IP;后端应用需要客户端 IP 时使用请求头转发。
自定义配置
在网站编辑器的 自定义配置标签页中, 可以添加作用范围为 当前网站或全局的额外指令,不需要直接修改配置文件:
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_buffer_size 64k;
proxy_buffers 4 64k;注意事项
- 确认后端服务已经启动并监听指定端口。
- 后端是 Docker 容器时,确认端口映射正确,或使用 Docker 网络访问。
- 后端服务崩溃时,Nginx 会返回 502。
