[GH-ISSUE #2258] url routing 只能访问根目录,如何配置使其递归访问所有资源 #1793

Closed
opened 2026-05-05 13:09:32 -06:00 by gitea-mirror · 3 comments
Owner

Originally created by @deqoder on GitHub (Feb 26, 2021).
Original GitHub issue: https://github.com/fatedier/frp/issues/2258

版本

客户端与服务器用的都是最新0.35.1

配置文件

  • frps.ini 配置了bind_portvhost_http_port
  • frpc.ini
      • [common]段配置了server_addr server_port
      • 新建[web-laptop]段配置了 type local_port locations custom_domains,其中locations = /laptop

测试

  • 测试一:通过服务器IP加vhost_http_port端口,加/laptop可以访问本地网页根目录,但发现网页中请求的其他资源无法访问

  • 测试二:修改网页中资源的请求路径为相对路径,结果其他资源仍无法访问,返回404

  • 测试三:修改frpc.ini中的locations = /laptop/,多了个斜杠,结果返回200,但内容却是根目录的网页,我的网页在本地127.0.0.1访问都正常。

  • 测试四:内网自己写的http服务器增加请求的url输出,远程访问,内网控制台显示,请求的url都是/laptop/xxx,也就是是由于我内网服务器找不到资源,默认返回了根目录。所以,location字段好像只是路由,并没有替换请求的url

问题

怎么配置才能递归访问所有资源。

Originally created by @deqoder on GitHub (Feb 26, 2021). Original GitHub issue: https://github.com/fatedier/frp/issues/2258 ## 版本 客户端与服务器用的都是最新0.35.1 ## 配置文件 * `frps.ini` 配置了`bind_port`和`vhost_http_port` * `frpc.ini` * * `[common]`段配置了`server_addr` `server_port` * * 新建`[web-laptop]`段配置了 `type` `local_port` `locations` `custom_domains`,其中`locations = /laptop` ## 测试 * 测试一:通过服务器IP加`vhost_http_port`端口,加`/laptop`可以访问本地网页根目录,但发现网页中请求的其他资源无法访问 * 测试二:修改网页中资源的请求路径为相对路径,结果其他资源仍无法访问,返回404 * 测试三:修改`frpc.ini`中的`locations = /laptop/`,多了个斜杠,结果返回200,但内容却是根目录的网页,我的网页在本地127.0.0.1访问都正常。 * 测试四:内网自己写的http服务器增加请求的url输出,远程访问,内网控制台显示,请求的url都是`/laptop/xxx`,也就是是由于我内网服务器找不到资源,默认返回了根目录。所以,`location`字段好像只是路由,并没有替换请求的url ## 问题 怎么配置才能递归访问所有资源。
Author
Owner

@fatedier commented on GitHub (Feb 26, 2021):

locations = /laptop 会将所有 URL Prefix 为 /laptop 的 HTTP 请求转发给你的应用,前提是你自己的 HTTP 服务确实是使用这样的请求路径,frp 不会修改任何你的网页内容。

你的场景应该是内网服务自身去增加 /laptop 这个 URL 前缀。

<!-- gh-comment-id:786381973 --> @fatedier commented on GitHub (Feb 26, 2021): `locations = /laptop` 会将所有 URL Prefix 为 `/laptop` 的 HTTP 请求转发给你的应用,前提是你自己的 HTTP 服务确实是使用这样的请求路径,frp 不会修改任何你的网页内容。 你的场景应该是内网服务自身去增加 `/laptop` 这个 URL 前缀。
Author
Owner

@deqoder commented on GitHub (Feb 26, 2021):

@fatedier 我这个'laptop'是作为客户端id的,所以你说内网服务自身增加'/laptop'这个前缀不现实。我知道正规的做法是通过子域名来区分,但我目前服务器没域名,所以想通过增加url路径前缀来区分。

应该能修改源码实现,代理时r.url.path去掉一层就行了,只是我不知道修改哪个文件哪一行

<!-- gh-comment-id:786408686 --> @deqoder commented on GitHub (Feb 26, 2021): @fatedier 我这个'laptop'是作为客户端id的,所以你说内网服务自身增加'/laptop'这个前缀不现实。我知道正规的做法是通过子域名来区分,但我目前服务器没域名,所以想通过增加url路径前缀来区分。 应该能修改源码实现,代理时r.url.path去掉一层就行了,只是我不知道修改哪个文件哪一行
Author
Owner

@fatedier commented on GitHub (Feb 26, 2021):

在你的内网服务前加上 nginx 之类的代理,应该可以通过配置实现你的需求。

<!-- gh-comment-id:786428290 --> @fatedier commented on GitHub (Feb 26, 2021): 在你的内网服务前加上 nginx 之类的代理,应该可以通过配置实现你的需求。
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/frp#1793
No description provided.