frp 和 nginx 搭建一个内网穿透服务器

frp 和 nginx 搭建一个内网穿透服务器
frpnginx穿透
阅读约 8 分钟
相关资料
frp下载 :https://github.com/fatedier/frp
相关文档: https://github.com/fatedier/frp
下载
下载地址:https://github.com/fatedier/f…
选择对应的版本进行下载

wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_386.tar.gz
如果是windows需要下载windos版本

wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_darwin_amd64.tar.gz
下载后、我的服务端是centos 客户端是windows

服务端需要关注的文件是 frps、frps.ini
客户端需要关注的文件是 frpc(或者是frpc.exe)、frpc.ini
注意,如果运行的环境是windows就要运行windows版本的,也就是exe后缀的

配置服务端
配置文件
# frps.ini
[common]
#服务端需要开启的端口(与客户端绑定的进行通信的端口)
bind_port = 7000
#服务端需要开启的端口(访问客户端web服务自定义的端口号)
vhost_http_port = 8081
auth_token = websong

type = http
custom_domains = abc.baidu.com
auth_token = websong
配置文件说明
bind_port
服务端需要开启的端口
vhost_http_port
服务端需要开启的端口
auth_token
需要客户端的auth_token与此一样
type
其实除了http还有其他参数,比如tcp,这里只讲述http,其他的请看相关文档: https://github.com/fatedier/frp
custom_domains
域名
具体接下来在配置客户端说明
启动服务
正常启动,ctrl+c能推出

./frps -c ./frps.ini
后台启动

nohup ./frps -c ./frps.ini &
如果有兴趣,更可以设置成开机启动(这里不讲述)

配置客户端
配置文件
# frpc.ini
[common]
server_addr = 48.104.176.184
server_port = 7000
auth_token = websong

[web6]
type = http
local_port = 80
custom_domains =b.abc.baidu.com
配置文件讲解
server_addr
对应服务器ip ,
server_port
与服务端配置bind_port一样
auth_token
与服务端配置auth_token一样
[web6]
这个是唯一的,假如在另外一个客户端用了web6将会报明显的错误
local_port
此端口,假如是80,那就是访问客户端机器的80端口
custom_domains
域名 这里重点说一下,这个参数可以填的域名有

abc.baidu.com
*.abc.baidu.com
但是,这些域名都是需要解析到服务器ip的
*.abc.baidu.com 这里就需要使用到域名泛解析
具体百度即可

客户端启动
./frpc -c ./frpc.ini
windows

./frpc.exe -c ./frpc.ini
后台启动前面加 nohup 跟服务端一样

nohup ./frpc.exe -c ./frpc.ini
穿透成功
启动网站
如果以上服务端启动,客户端启动都没问题的话
以客户端的配置的域名:custom_domains
和 服务端配置的端口vhost_http_port在浏览器打开即可
也就是 b.abc.baidu.com:8081
其实这些就相当于访问你客户端本机的
127.0.0.1:80 或者localhost:80,
这个80端口是客户端配置文件的的local_port
至此内网穿透完成

但是
但是刚刚有没有发现,访问的是带端口的网址,b.abc.baidu.com:8081
如果不想带端口呢,浏览器的默认端口是80,也就是说,我把服务端vhost_http_port,配置成80就好了,当然这样能解决
但是如果服务器有其他程序占用80端口呢,比如nginx,总不能把nginx换成其他端口吧,那我的博客www.blog.com就因为这个得改成www.blog.com:9090 假设改成9090,所以肯定有办法公用的
办法就是,我们可以利用nginx的反向代理就能完成,请接下来往下看 配置nginx
原文地址:http://www.taoluyuan.com/index.php/archives/42/

配置nginx
配置文件
server{
listen 80;
server_name *.abc.baidu.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/abc/;

location /
{
proxy_pass http://48.104.176.184:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
}
}
说明
如配置文件所属

本来是需要访问 http://b.abc.baidu.com:8081 的
nginx使用了泛域名配置,*.abc.baidu.com (你自己的域名肯定不一样)
server_name *.abc.baidu.com;
反向代理配置
proxy_pass http://48.104.176.184:8081;
ip是服务端的ip,端口是服务端配置vhost_http_port 8081

至于nginx的其他参数,跟平常大多数nginx配置网站参数一样
这里使用到了nginx泛域名解析,和反向代理
完成打开网站
如果客户端配置的custom_domains是b.abc.baidu.com
在浏览器输入 b.abc.baidu.com ,就不用带端口号8081 ,应为已经被nginx反向代理了;
这样做的好处是

使用的时候直接在浏览器输入域名就可以,不用输入端口,用户也不用知道服务端的vhost_http_port 端口是什么,
让服务器其他网站的端口可以不用改;
原文地址:http://www.taoluyuan.com/index.php/archives/42/

发表评论

电子邮件地址不会被公开。 必填项已用*标注