frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
本教程是根据 ftp-win 客户端 3.*版本
下载 frp
前往 GitHub 下载 frp:
有适用于各种不同操作系统的 frp,如果你对外提供的公网服务器和实际提供 Web 服务的服务器不是同一台机器的话,需要为各自机器下载对应版本的 frp。
准备好 Web 服务和 SSL 证书
你可以用任何方式开发你的 Web 服务,注意你的 Web 服务需要监听一个本机端口。
对于本文的后续内容,你需要将证书导出成 Nginx 格式,即一个 .pem 文件和一个 .key 文件。
配置 frp
配置 frps.ini
1 2 3 4 5 6
| [common] bind_port = 5443 vhost_http_port = 80 vhost_https_port = 443 token = ******
|
配置代理 http
编辑 frpc.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| [common]
server_addr = *.*.*.*
server_port = 5443
token = **********
[web_webman1] type = http local_port = 8787 remote_port = 9980 custom_domains = qianxun.local.com
[web_webman2] #将http转发为https type = https local_port = 8787 remote_port = 9980 custom_domains = qianxun.local.com plugin = https2http #FRP的http转https服务 plugin_local_addr = 127.0.0.1:8787 plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp use_encryption = true
force_https = true
plugin_crt_path = ./ssl/fullchain.pem plugin_key_path = ./ssl/privkey.key
|
配置 Nginx 代理
在本地的 nginx 服务里,新增个站点,并配置 nginx 代理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name qianxun.local.com; ssl_certificate "/etc/nginx/ssl_files/server.pem"; ssl_certificate_key "/etc/nginx/ssl_files/server.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on;
location / { proxy_pass http://127.0.0.1:7171; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Expect $http_expect;
proxy_connect_timeout 7d; proxy_send_timeout 7d; proxy_read_timeout 7d; } }
|
其中 qianxun.local.com 为需要开通的 https 的域名。
最后将对应的域名证书放好。
然后分别启动:
1 2 3 4
| ./frps.exe -c ./frps.ini
./frpc -c ./frpc.ini
|