apache 和 frp 之间关于仅做“端口转发”的问题

2017-11-01 15:33:47 +08:00
 korvin

情况说明:

一台服务器,上面运行 apache、内网穿透 frp 服务 apache 监听 80 端口,上面运行了 www.a.com frp 监听 8088 frps 配置了启用二级子域名subdomain_host,只要是符合*.b.com:8088就可以 本地启动了 frpc,定制二级域名 ja

目前的效果

访问 www.a.com,进 apache,访问 ja.b.com:8088,进服务器的 frp,然后转发到本地的服务里。

想实现的效果

  1. 访问 www.a.com ,进 apache
  2. 访问 ja.b.com ,进 frp,并转发到本地的服务里,相当于要在服务器上把*.b.com:80的请求转到*.b.com:8088服务上(域名前缀很重要,必须 x.b.com:80 转到 x.b.com:8088y.b.com:80 转到 y.b.com:8088 )。

尝试过的配置

<VirtualHost *:80>
    ServerName www.b.com
    ServerAlias *.b.co
    ProxyRequests Off
    ProxyPass / http://localhost:8088/
    ProxyPassReverse / http://localhost:8088/ #反向代理转发给本机的 8080 端口
</VirtualHost>

<VirtualHost *:80>
    ServerName www.a.com
    DocumentRoot "D:\web\dist"
    <Directory "D:\web\dist">
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
        Options Indexes
    </Directory>
</VirtualHost>

但 frp 是要根据域名前缀来决定转发到哪台本地电脑上,所以之前配置里直接转发到服务器本地http://localhost:8088/是有问题的。

大家有没有其它方案,在一台服务器上实现。

2066 次点击
所在节点    问与答
3 条回复
forwardlee
2018-05-23 14:57:38 +08:00
昨天我也是和你同样的问题,利用 Apache 反向代理怎么弄都是失败的,最后使用 Nginx 一次成功,下面是我写的经验参考,希望对你有所帮助。
————————————————————

我写了新文章《配置 Nginx 反向代理 FRPS 服务端口》 https://www.jianshu.com/p/54ecdcd4ec65
snable
2018-10-16 23:52:24 +08:00
<VirtualHost *:80>
ServerAdmin snable@sina.com
ServerName www.example.com
ServerAlias image.example.com pan.example.com
ProxyPreserveHost On
ProxyPass / http://localhost:8088/
ProxyPassReverse / http://localhost:8088/
</VirtualHost>
ygchy
2018-11-14 21:13:10 +08:00
@snable 你的办法很好用,网上找到的大多是 Nginx 的,感谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/402643

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX