龙空技术网

利用frp内网穿透实现用自家电脑发布网站

KSU美妆 395

前言:

而今小伙伴们对“服务器如何发布网站”大概比较关注,你们都需要学习一些“服务器如何发布网站”的相关文章。那么小编也在网摘上搜集了一些关于“服务器如何发布网站””的相关资讯,希望大家能喜欢,兄弟们快快来了解一下吧!

一直想总结一下使用frp的经验,今天来写一下

我的yiiu.co域名的网站都是用frp做的内网穿透实现的,服务器就在我身边,发布的网站服务外网都访问,下面就来说说我的配置方法

下载frp

这个不多说,选择好自己的平台就可以了,注意版本号一定要一致,下载地址

打开可以看到 linux 平台有很多版本,386, amd64, arm, arm64 等等,这里说一下,如果你服务器是32位,就下载 386,如果你服务器是64位的,而且你又不能分清cpu是arm架构的还是amd架构的,那也选386

总之一句话,对系统架构分不清的就只下载386的就对了

解压下载好的压缩包,可以看到几个文件

.├── LICENSE├── frpc├── frpc.ini├── frpc_full.ini├── frps├── frps.ini└── frps_full.ini

各文件说明

LICENSE 版权说明文件frpc 客户端启动命令frpc.ini 客户端配置文件frpc_full.ini 客户端配置文件参考文件frps 服务端启动命令frps.ini 服务端配置文件frps_full.ini 服务端配置文件参考文件

frp运行流程

做内网穿透需要事先准备的

一台外网服务器一台内网服务器

一次请求的经过,最简单的流程

用户请求(浏览器) -> 外网服务器ip -> 外网服务器上部署的frps -> 内网服务器上部署的frpc -> 内网服务器上部署的服务

请求成功后,响应过程与请求过程相反

这个过程中还可以加上 nginx 来做不同域名共用80端口的转发工作,那样就会变成

用户请求(浏览器) -> 外网服务器ip -> 外网服务器nginx -> 外网服务器上部署的frps -> 内网服务器上部署的frpc -> 内网服务器nginx -> 内网服务器上部署的服务

好了明白这些了,就可以来做配置了

配置frps

想办法把 frps frps.ini 拷贝到外网服务器上

我这假设放在 /opt/frp/ 下,假设外网服务器ip是 10.10.10.10, 假设网站域名是 example.com

修改 frps.ini

[common]bind_port = 7000dashboard_port = 7500dashboard_user = admindashboard_pwd = 123123token = 123123vhost_http_port = 8000subdomain_host = example.com
bind_port frps启动时要占用的端口dashboard_port frps启动后管理后台的端口dashboard_user frps启动后管理后台登录的用户名dashboard_pwd frps启动后管理后台登录的密码token frpc连接frps时要用到的令牌,如果不设置任何一个frpc都能连进来就不安全了vhost_http_port frps转发的内网服务的端口subdomain_host 你的域名

然后启动 frps

# 给frps附上可执行权限sudo chmod +x frps# 在后台运行并将日志写入到当前目录下的 log.file 里./frps -c frps.ini > log.file 2>&1 & 

配置frpc

想办法把 frpc frpc.ini 拷贝到内网服务器上

我这假设放在 /opt/frp/ 下, 假设要配置的网站域名是 example.com bbs.example.com blog.example.com 三个域名

修改 frps.ini

[common]server_addr = 10.10.10.10server_port = 7000token = 123123[example]type = httplocal_ip = localhostlocal_port = 8080use_encryption = falseuse_compression = truecustom_domains = example.com[bbs]type = httplocal_ip = localhostlocal_port = 8081use_encryption = falseuse_compression = truesubdomain = bbs[blog]type = httplocal_ip = localhostlocal_port = 8082use_encryption = falseuse_compression = truesubdomain = blog

相关配置说明

server_addr 外网服务器的ip,也就是frps所在服务器的ipserver_port frps.ini 上配置的 bind_porttoken 必须跟在 frps.ini 里配置的 token 一致,否则会导致连不上frpsuse_encryption 是否使用加密,我这没用,因为我在外网通过nginx配置了https所以内网的服务都是http的use_compression 是否使用压缩,使用了网站响应数据会小一些,网站速度也会更快一些subdomain 二级域名的名字

启动 frpc

# 给frps附上可执行权限sudo chmod +x frpc# 在后台运行并将日志写入到当前目录下的 log.file 里./frpc -c frpc.ini > log.file 2>&1 & 

注意:内网服务器上要启动三个web服务,分别端口对应 8080, 8081, 8082

映射ssh

如果我们不在内网服务器旁边,web服务要是出问题了,会比较麻烦,这时可以通过frp映射一个ssh,这样就可以随时随地的操作内网了

只需要配置frpc.ini 即可

[common]...[ssh]type = tcplocal_ip = localhostlocal_port = 22remote_port = 7001[example]...

同样的方法还可以映射游戏,同样的使用 type = tcp 把端口改成游戏的端口就可以了,比如Minecraft的端口是25565,是不是相当的方便,快跟小伙伴组队吧

重启 frpc , 然后就可以使用命令 ssh -p 7001 root@10.10.10.10 来连接内网的终端了

总结

你可以通过访问 然后输入 frps.ini 里配置的 dashboard_user dashboard_pwd 来查看frp的运行情况在启动frpc之前,你要在域名提供商那把域名解析到外网服务器上如果ssh映射连接总是超时,要看一下外网服务器是否把7001端口开放了,有可能是外网服务器的防火墙拦住了

标签: #服务器如何发布网站