由于准备开发微信公众号的业务。。。。
准备工作
- 首先你需要一台带有公网IP地址的服务器
- 你需要一个域名,比如hashx.cn。
外网域名配置
- 首先A记录解析
frp.hashx.cn
到你的公网服务器上 - 这步可选。在泛解析一个域名。比如当你访问
abc.frp.hashx.cn
或者xyz.frp.hashx.cn
也可以访问到你的服务器。这个当你有多人开发的时候很实用。如果自己一个人开发就解析一个就可以了。
安装服务端
服务端的安装非常的简单,只需要从Github上下载对应的平台程序后解压就可以了。
这里由于我使用的公网服务器是CentOS7,所以下载了frp_0.13.0_linux_amd64.tar.gz这个平台版本。解压后的文件如下
.
├── frpc #客户端程序
├── frpc_full.ini
├── frpc.ini # 客户端配置文件
├── frps #服务端程序
├── frps_full.ini
├── frps.ini #服务端配置文件
└── LICENSE
对于服务端的配置我们这里只需要使用frps和frps.ini就可以了。下面我贴出我的配置文件
bind_port = 7000
vhost_http_port = 8080
subdomain_host = frp.hashx.cn #这个是定义配置了子域名,在frpc中直接配置subdomain选项就可是使用wx.frp.hashx.cn这样的域名了
privilege_token = ooxx # 这里是为了安全的考虑,加入一个身份认证的 token 配置,这里只要服务端和客户端配置一致即可
dashboard_port = 7500
dashboard_user = root
dashboard_pwd = admin_codelaradock
log_file = ./frps.log
log_level = info
log_max_days = 3
Nginx 反向代理配置
其中,因为我的服务器上有相关其他的程序共用,80 端口上交给了 nginx ,而在微信的接口配置时,只能是 80 or 443 端口,因此,这里我还借用了 nginx 的反向代理功能,配置如下:
安装客户端
由于我本地开发机是使用的Vagrant,所以我需要将上面下载的程序中的frpc
和frpc.ini
拷贝到vagrant虚拟机中进行配置就ok了。配置文件如下
[common]
server_addr = frp.hashx.cn
server_port = 7000
privilege_token = ooxx
[web]
type = http
local_port = 80
;正是在frps中配置了subdomain_host所以这里只需要指定subdomain作为前缀
;最终在微信公众后台配置的域名为wx.frp.hashx.cn
subdomain = wx
配置结束后执行运行./frpc -c frpc.ini
进行启动。
如果你是使用的wamp集成开发环境可以参考这篇文章里作者的配置
配置开发环境虚拟主机
由于我们使用了域名作为主机头的方式,所以我们本地开发环境也需要配置一个虚拟主机,虚拟主机的server_name就是上面的微信后台填写的域名wx.frp.hashx.cn。我本地是使用的lnmp一键包,所以最终填写后的虚拟主机配置文件为
server
{
listen 80;
#listen [::]:80;
server_name wx.frp.keer.me ;
index index.html index.htm index.php default.html default.htm default.php;
root /srv/code/frp;
include none.conf;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/wx.frp.hashx.cn.log;
}
作为测试你可以到/srv/code/frp(根据你的nginx配置可能有所不同)下面新建一个index.php来测试看看是否可以正常的访问。