当前位置:论坛首页 > Linux面板 > 建议

【待反馈】开源作者遇到反向代理的问题,有一些建议

发表在 Linux面板昨天 12:36 [复制链接] 5 42

宝塔的项目人员你们好,我是开源项目 zfile 的作者,有很多用户在使用宝塔的过程中遇到一些问题。


关于反向代理配置,为什么默认为 `proxy_set_header Host 127.0.0.1server_port;`。
程序经过反向代理后,无法直接拿到客户请求的原始地址(请求头中的 Host),所以一般会通过反向代理将用户请求的 Host 请求头转发给后端程序,按照现在宝塔的默认配置,项目获取到的 Host 请求头始终是 127.0.0.1。而且这个应该是宝塔后面修改成这样了,我之前用老版本宝塔还是默认 $host,请问改成现在这样有什么原因,为什么不使用更通用的 $host(其他反代工具、CDN 加速等默认行为都是这个),虽然用户能手动修改发送域名,但是还是希望能还原默认值到 $host,或者为了兼容非标准端口访问的话,可以改为 $hostserver_port;


还有个就是希望增加 `proxy_set_header X-Forwarded-Proto $scheme;` 这个配置。
同理,经过反向代理后,后端程序无法知道用户通过 http 还是 https 协议访问的, 这行配置的作用是反向代理工具将用户请求的协议告诉后端,如果不添加的话,只能当做 http 处理,如一个短链处理程序,接收到 https://xxx.com/s/qw1a  请求,需要重定向到实际地址,可后端只知道路径 /a/b/c/file.name,协议需要从 X-Forwarded-Proto 获取,没有就只能默认 http,用户请求域名需要从 proxy_set_header 获取地址,拼接起来。预期应该是 https://xxx.com/a/b/c/file.name,可实际会跳转到 http://xxx.com/a/b/c/file.name,现代浏览器有安全限制,一般不允许 https 站点跳转至 http 协议,会提示不安全。
使用道具 举报 只看该作者 回复
发表于 昨天 12:38 | 显示全部楼层
被自动转义成表情了,补充:
  1. proxy_set_header Host 127.0.0.1:$server_port;
复制代码
  1. proxy_set_header Host $host:$server_port;
复制代码
使用道具 举报 回复 支持 反对
发表于 昨天 15:19 | 显示全部楼层
奇怪的是宝塔后台 "网站" -> "反向代理" 目标地址写 "http://127.0.0.1:9090" 这种地址,能自动检测到,填充为 $http_host,这个也可以,算比较正常的行为。而且也包含 X-Forwarded-Proto。

能不能这些都统一下,参考你们自带的  "网站" -> "反向代理"  模块
使用道具 举报 回复 支持 反对
发表于 昨天 17:19 | 显示全部楼层
又验证了下,1panel,nginx proxy manager,traefik 都是正常的
使用道具 举报 回复 支持 反对
发表于 12 小时前 | 显示全部楼层
上面说的反代是哪个位置的,docker的吗
使用道具 举报 回复 支持 反对
发表于 2 小时前 | 显示全部楼层
阿珂 发表于 2025-7-14 11:05
上面说的反代是哪个位置的,docker的吗

"网站" -> "PHP 项目" -> "项目详情" -> "添加反向代理"

"网站" -> "其他项目" -> "项目详情" -> "配置文件"
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术免费分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表