内网穿透 frp, 实现访问域名转到内网服务器

2018-09-05 10:56:51 阅读:26 编辑

安装 frp

实现以下功能

打开 http://frp.xmyunce.com:8081, 最后会转到 http://127.0.0.1:80

1. 安装服务器 ( 阿里云)
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_Linux_amd64.tar.gz
tar -zxvf frp_0.21.0_Linux_amd64.tar.gz
cd frp_0.21.0_linux_amd64

vi frps.ini 注:这里使用 8081 做测试,因 80 端口被占用。 7000 与 Web 端口要开放 可以使用 subdomain_host 和 subdomain 或者客户端使用 custom_domains 服务端 subdomain_host 为域名,客户端 subdomain 为二级域名 比如:frp.xmyunce.com subdomain_host = frp.xmyunce.com subdomain = frp

[common]
bind_port = 7000  # 与客户端绑定的进行通信的端口
vhost_http_port=8081 # 访问客户端 Web 服务自定义的端口号
token=123456 # 验证客户端

前台运行: ./frps -c frps.ini 后台运行: ./frps -c frps.ini &

2. 安装客户端 (可以直接在本机,win64)

下载 https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_Windows_amd64.zip

配置 frpc.ini

[common]
server_addr = 139.129.201.40 # 服务端 IP
server_port = 7000
token = 123456 # 验证服务端,要与服务端一样
[Web]
type = http
local_ip = 127.0.0.1 # 内网 Web 的 IP
local_port = 8888 # 内网 Web 的端口
custom_domains = frp.xmyunce.com # 二级域名 访问时 即:frp.xmyunce.com 泛域名解析到 公网 IP:139.129.201.40

# 可选
[SSH]
type = tcp
local_ip = 192.168.10.184
local_port = 22
remote_port = 6000

添加 vhost

<VirtualHost *:8888>
  ServerName localhost
  DocumentRoot "e:/edison/linblog/public"
  <Directory "e:/edison/linblog/public/">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require local
  </Directory>
</VirtualHost>

httpd.conf

Listen 0.0.0.0:8888

运行客户端

Linux

./frpc -c ./frpc.ini

后台常驻运行

screen ./frpc -c ./frpc.ini

Windows

frpc -c frpc.ini

SSH 访问到内网主机 (只能为 Linux)

SSH -oPort=6000 root@139.129.201.40

https://github.com/fatedier/frp/

有办法让 frp 和 nginx 共存一起用 80 端口吗?

server{
    listen 80;
    server_name frp.xmyunce.com;

    location / {
        proxy_pass  http://127.0.0.1:8081;
        proxy_set_header    Host    $host:80;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_hide_header   X-Powered-By;
    }
}

本地 apache, 占有 80 端口,可以使用其它端口。

修改 local_port = 80

应用

  1. 测试小程序的微信支付,由于微信支付的回调地址必须是有效的域名。以前只能搭建外网服务器做测试。现在则可以直接使用 frp
  2. 微信测试号 -- 服务器配置使用 frp.xmyunce.com, 可以更加方便的调试公众号返回的信息。用于临时测试。
  3. 有时需手机调试页面时,就可以直接访问 frp.xmyunce.com, 间接访问内网或本机。比访问内网 IP 要配置很多东东好用。