目录
一、前置条件
二、为什么要配置这个内网穿透
三、配置过程
1.解析二级域名
2.配置frp最新程序
2.1 下载
2.2 客户端配置
2.3 服务端配置
3. Nginx配置
4. 配置服务端开机运行文件
比如,frp.taobao.com,指向你的公网服务器IP:1.2.3.4,这两项后面要用,在小本本上记好。。。
github
frp还在频繁升级中,我用的是frp_0.33.0版本,win10电脑(以下称客户端)上放置frp_0.33.0_windows_amd64,服务器上放置frp_0.33.0_linux_amd64,这两个对应文件请自行下载,解压后文件夹改个好用的名称放到你想放的地方,在客户端,我是放到D:\frp,在服务端我放到/alidata/server/frp,下面,开始配置frp.
打开D:\frp中的frpc.ini(注意,客户端其实只使用这个frpc.exe),写放如下内容:
[common]
server_addr = 1.2.3.4
#服务器开放一个端口,在服务器配置中还要讲
server_port = 7000
#可以设置多个域名指向这个客户端开放的不同端口
[web01]
type = http
local_port = 8068
remote_port = 7001
custom_domains = frp.taoba.com
[web02]
type = http
#客户端的web端口
local_port = 8068
#服务器开放的端口
remote_port = 7001
custom_domains = abc.taoba.com
然后,在CMD中cd 到D:\frp操作:frpc -c frpc.ini,客户端就开始工作了,当然,现在根本实现不了你想要的穿透
根据我一贯做法——我要把这完意搞成开机自动运行,刚才的命令行操作只是临时调试用的,so,你想了解更多,请使用frpc --help。
******nssm是一个很好用的工具,你可以在网上查询,它的下载地址是:这里这里,目前是2.24版,下载后解压,根据你的客户端系统选择一个nssm.exe文件,把它放到D:\frp,和frpc同一文件夹。
在CMD(要求管理员权限)中进行安装:输入 nssm install
然后,nssm start,好吧,以后它会自己玩,不用每次开机都要打开CMD操作了。nssm --help可以让你学到更多。
现目前,客户端部分就算配置完成了。
在xshell中cd 到/alidata/server/frp,我们进行frps配置,在服务端,只需要运行这个文件,所以frpc是客户端的,frps是服务端的。写到这里,不得不说,frp官方的文档写的在国内算好的吧,但我还是一下子没读懂。前后搞了一个下午才初入门槛。
给frps权限 chmod 700 frps
然后: nano frps.ini(我不喜欢vim),进行如下配置:
[common]
#在服务器上,要开放7000和7001两个端口
bind_port = 7000
vhost_http_port = 7001
#下面这两行是log文件,如果不设置,运行状态会打印在屏幕上,调试时建议先注释掉下面两行
#log_file = ./frps.log
#log_level = warn
然后保存,端口可以根据自己的情况设置成其他的数值,这里只是根据官方文件测试。
然后在xshell中输入:./frps -c ./frps.ini,这时,屏幕上开始输出一些信息,但当你在浏览器中输入你的域名时,仍然不能看到你想要的。可以偿试:frp.taobao.com:7001或者:1.2.3.4:7001
如果想直接用frp.taobao.com访问你的客户端上的站点,还需要做一些工作。
为你的frp.taobao.com二级域名配置nginx文件(基本靠你自己,我的nginx已经被我搞乱了,搬到你那里可能真不能用):
server {
listen 80;
server_name frp.taobao.com;
location / {
proxy_pass http://127.0.0.1:7001;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_redirect off;
proxy_read_timeout 240s;
}
}
以上是网上的内容,我没有测试!!!因为我的nginx都配置成https了。。
下面是我的https文件,是经过测试的
server
{
listen 443 ssl;
ssl_certificate /xxxx/xxchain.pem;
ssl_certificate_key /xxxx/xxprivkey.pem;
server_name frp.taobao.com;
access_log /alidata/log/nginx/access/vend.log;
error_log /alidata/log/nginx/error.log;
location / {
proxy_pass http://127.0.0.1:7001;
proxy_set_header Host $host;
}
}
重启nginx,在浏览器中输入frp.taobao.com,出现你的网站了吗?还没有?那你在客户端也要让你的网站运行起来,就象是它在服务器上一样。
当然,这还达不到我的要求,我说过,我喜欢让它开机自动运行,最终目标就是,我每天到办公室打开电脑,别人就可以自由的浏览我电脑上的网页。。。
以下配置只适用于ubuntu18.04
nano /etc/systemd/system/frps.service
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/alidata/frp/frps -c /alidata/frp/frps.ini
[Install]
WantedBy=multi-user.target
systemctl enable frps
systemctl start frps
systemctl stop frps
到目前,这个内网穿透的配置就算完成了,当然,这只是一个完整的流程,内容很单薄。如果只是简单的测一下网站,这样用就可以了,可以很方便的用到自己的域名。但是如果有更重要的用途,建议仔细阅frp的官方文档,进行更严格的设置,比如设置密码,鉴权等。