绕不过有固定IP的情况,一定要有一个固定IP的云服务器。
花生壳的域名的某种限制,即使购买花生棒(吐槽一下)。
开始
环境:云服务器,有固定IP,有域名。
下载nginx(v1.17.8)
下载frp(v0.31.1)
下载的压缩包解压即可。
配置
-
配置frps.ini
是frps,不是frpc。frps是服务端。这个放到云服务器上。据说两个文件就可以:frps.exe和frps.ini
[common]
# 设置连接端口(默认),这个可以改成自己想指定的,改过后需要把云服务器的7000端口打开
bind_port = 7000
# 最大连接数
max_pool_count = 5
# 设置dashboard端口及登录信息,可自己指定
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
# 设置日志显示级别{debug, info, warn, error)
log_level = debug
# 指定日志文件;如果不使用,则在控制台显示
#log_file = ./frpc.log
# 设置日志最大天数
log_max_days = 5
# 设置特权模式是否开启,开通后web,ssh等使用都可以直接在客户端设置
privilege_mode = true
# 设置特权模式token值,自己设置
privilege_token = token
# 设置转发端口(客户端映射的端口 注意是否与其他程序冲突)如果使用nginx转发,则由80改成其他端口,在nginx中进行配置
vhost_http_port = 8081
执行>frp.exe -c frp.ini
C:\java\frp>frps.exe -c frps.ini
2020/01/31 14:58:27 [I] [service.go:139] frps tcp listen on 0.0.0.0:7000
2020/01/31 14:58:27 [I] [service.go:181] http service listen on 0.0.0.0:80
2020/01/31 14:58:27 [I] [service.go:239] Dashboard listen on 0.0.0.0:7500
2020/01/31 14:58:27 [I] [root.go:205] Start frps success
运行后,会一直访问www.6661898.com,为什么?不知道,即使是从github上下载的,没看源码和重新编译
(因为不会 !!>_<!! )
-
配置nginx
打开目录下的conf/nginx.conf
在 server{}之前添加新的server
#gzip on;
#第一个普通web网站,本地的web程序,端口为8080
#域名访问,在域名解析中增加一个A,指向云服务的固定IP
server {
listen 80;
server_name web1.your_domain.com;
location / {
proxy_pass http://localhost:8080;
}
}
#第二个是frp,二级域名自己定,本处使用frp
#微信的服务器或域名授权指向这个域名
server {
listen 80;
server_name frp.your_domain.com;
location / {
# 这里的端口需要跟frps的vhost_http_port的设置保持一致
proxy_pass http://127.0.0.1:8081/;
proxy_set_header Host $host;
proxy_set_header Remote_Addr $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
-
配置本地frp
也是两个文件:frpc.exe和frpc.ini
[common]
#云服务器的固定IP及端口
server_addr = 100.100.100.100
server_port = 7000
#设置特权模式token值,与服务frps.ini中的一致
privilege_token = token
# 指定日志文件;,如果不使用,则在控制台显示
#log_file = ./frpc.log
# 指定日志等级;
log_level = info
log_max_days = 3
#设置管理地址,本地通过http://127.0.0.1:7400可以看到
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_passwd = admin
#第一个web
[web01]
privilege_mode = true
type = http
local_ip = 127.0.0.1
local_port = 8080
#自己的域名,与云服务器nginx配置的一致
custom_domains = frp.your_domain.com
#第二个web。如果暂时不用需要把以下全部进行#注释
#[web02]
#privilege_mode = true
#type = http
#local_ip = 127.0.0.1
#local_port = 8081
#custom_domains = web2.you_domain.com
#如果是多个web,在nginx的server_name中以空格间隔即可。
#如: sever_name frp.your_domain.com web3.you_domain.com;
[web03]
privilege_mode = true
type = http
local_ip = 127.0.0.1
local_port = 8083
custom_domains = web3.you_domain.com
执行frpc
d:\frp>frpc.exe -c frpc.ini
2020/02/02 21:39:30 [I] [service.go:250] [b68722bb3d86938e] login to server success, get run id [b68722bb3d86938e], server udp port [0]
2020/02/02 21:39:30 [I] [proxy_manager.go:144] [b68722bb3d86938e] proxy added: [web01]
2020/02/02 21:39:30 [I] [service.go:130] admin server listen on 127.0.0.1:7400
2020/02/02 21:39:30 [I] [control.go:164] [b68722bb3d86938e] [web01] start proxy success
以上只是执行了一个web
调试
微信指定域名:frp.your_domain.com
本地debug自己的程序
完成搭建