FRP内网穿透·续

3年前 1

之前说过FRP+nginx内网穿透,只是摘抄网上分享的方法,理论是内网和外网主机都分别架设服务器,然后通过frp内网穿透,而外网服务器则通过反向代理到frp的端口上,但是我失败了,因为https反向代理必须代理到http网站上,这样的话,像我这样博客WordPress后台有绑定网址的,前台展示的css样式就是http上读取的,而后台则进不去,显示无线循坏状态。所以只有…放弃nginx反向代理。

首先,外网服务器无需架设nginx服务,只要有个正常的系统即可,我推荐Linux服务器,安全稳定设置简单,所以说外网服务器除了带宽要求,配置不需要很好了。

上传frps及其配置文件frps.ini服务端,配置如下:

[common]
bind_port = 7000
token = 123456
#这两个端口直接设置80和443
vhost_http_port = 80
vhost_https_port = 443

#以下配置可以有也可以没有,根据需要
dashboard_addr = 0.0.0.0
dashboard_port = 7500
# dashboard user and passwd for basic auth protect
dashboard_user = admin
dashboard_pwd = admin
# enable_prometheus will export prometheus metrics on {dashboard_addr}:{dashboard_port} in /metrics api.
enable_prometheus = true
# console or real logFile path like ./frps.log
log_file = ./frps.log
# trace, debug, info, warn, error
log_level = info
log_max_days = 3

启动frps服务。

其次,内网服务器正常架设网站服务,本人推荐lnmp,非常了不起的快速搭建网站环境。然后上传frpc及其frpc.ini内网穿透客户端,配置如下:

[common]
# 这里填写 A 机器的 IP 或者域名
server_addr = X.X.X.X
# 填写 A 机器开放的 frp 服务端口,也就是 frps.ini 配置文件中 bind_port 的值
server_port = 7000
token = 123456

[hjyl_http]
# 依然支持 http 访问
type = http
# 本地 Web 服务的端口
local_port = 180
# 需要反向代理的域名(当访客通过此域名访问 A 机器时,才会将请求反向代理到此 Web 服务)
custom_domains = hjyl.org

[hjyl_https]
# 配置 https 访问
type = https
# 本地 Web 服务的端口(与前面的配置一样,都对应同一个 Web 服务)
local_port = 1443
# 需要反向代理的域名(当访客通过此域名访问 A 机器时,才会将请求反向代理到此 Web 服务)
custom_domains = hjyl.org

# 接下来的配置是支持 https 的重点配置
# 配置插件,将 https 请求转换成 http 请求后再发送给本地 Web 服务程序
plugin = https2https
# 转换成 http 后,发送到本机的 9999端口
plugin_local_addr = 127.0.0.1:1443
# 这个头部信息我改成你映射的域名,这样feed就不会转到127.0.0.1本地网站了
plugin_host_header_rewrite = hjyl.org
# 指定代理方式为 frp
plugin_header_X-From-Where = frp
# 指定成你在前面部分导出的证书的路径
plugin_crt_path = /wwwroot/keys/hjyl.org.crt
plugin_key_path = /wwwroot/keys/hjyl.org.key

启动frpc服务。

到此基本上99%内网直接穿透到外网了。

但是还有几个问题,譬如,你会发现你评论上显示的IP地址全都是127.0.0.1,而不是客户真是地址,为什么呢?原因一直找不到,求大神指点!其次,那个微博同步插件失效了,我测试过,貌似不是PHP版本的问题,可能与之有关。

1条评论

  1. #1

    明天装着试下,有这两个配置应该能成功

评论 林哥哥 取消评论