frp内网穿透,可以使用域名,也可使用IP一般来讲,域名比较好记点,尤其是提供web服务时。所以有域名的话应尽量使用域名,实在没有域名的话才使用IP。
由于web服务一般均会使用80端口,如果80端口已被nginx或其它web 服务占用的话,则要改成其他端口,如8080,也可使用nginx的反向代理实现frp服务端与nginx共用80端口。

一、内网穿透配置

文中frps就是服务器端(server),frpc就是客户端(client)。

1. 有自己域名的FRP配置

# frps.ini服务端配置
[common]
bind_addr = 0.0.0.0
bind_port = 7000

#鉴权方式,此处的token值应和客户端保持一致

privilege_token = abcdefghijk
vhost_http_port = 80
vhost_https_port = 443


vhost_http_port = 80 和 vhost_https_port = 443 

 将服务器的80端口做http,443端口做https

 原理就像nginx一样,可以多个网站共同使用这两个端口。

 

#frpc.ini客户端配置

[common]
server_addr = 服务端IP
server_port = 7000
privilege_token = abcdefghijk

[httpname]
type = http
local_port = 80
local_ip = 127.0.0.1
custom_domains = gasz.netniu.cn

[httpsname]
type = https
local_port = 443
local_ip = 127.0.0.1
custom_domains = files.netniu.cn

这里的 gasz.netniu.cn,files.netniu.cn两个域名要真实存在,且要在域名解析里将指定域名解析到frps服务端的IP上。

custom_domains = 这里填写已经解析到frps服务端IP上的域名,每个穿透对应服务,都可以绑定一个专属域名用于访问,包括使用tcp和udp协议。

然后就可以通过这个已经自定义域域名访问到自己的对应HTTP服务。


2. 只有IP,没有自己域名的配置

如果自己没有域名,但又想使用FRP实现内网穿透实现HTTP服务

frps.ini服务端配置

# frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 7000
privilege_token = abcdefghijk

# frpc.ini客户端配置
[common]
server_addr = 服务端IP
server_port = 7000
privilege_token = abcdefghijk

[httpname]
type = tcp
local_port = 80
local_ip = 127.0.0.1
remote_port = 8080

然后就可以通过 服务端IP地址:8080 来访问访问到对应穿透的服务。


二、使用nginx的反向代理实现frp服务端与nginx共用80端口

利用nginx的反向代理来实现网站与frp共用80端口。

假如frp要用使用的域名是 gasz.netniu.cn
1、修改服务器中nginx.conf配置文件(如果有宝塔面板,可以在面板中的ngix中直接修改)
在nginx.conf中http{ }里添加以下参数,
 server {
    listen 80;
    server_name gasz.netniu.cn;
    location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_redirect http://$host/ http://$http_host/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    }
}

其中:server_name gasz.netniu.cn; 这里填写域名。
也支持泛解析,例如:server_name *.netniu.cn  需要域名同时进行泛解析才行。
设置完保存,重载配置,重启nginx


2、对应地修改frp服务端配置文件
上面配置中设置反向代理到了8080端口,那么frp服务端的配置文件也要对应设置。
将frps.ini配置文件中也设置为8080端口
   vhost_http_port = 8080

3、修改frp客户端配置文件
    frpc.ini 对应穿透服务配置里配置好对应域名,custom_domains = gasz.netniu.cn

4、服务器中重启frps,本地电脑中启动frpc。

5. 在浏览器中直接访问gasz.netniu.cn就可以了,不需要带上8080端口。

注意:gasz.netniu.cn是解析到服务器的公网IP地址。而frp穿透的网站是搭建在局域网内的本地的电脑上,要保证本地电脑本身的web服务是启动正常的,即在本地浏览器打开 http://127.0.0.1或 http://localhost 能打开网站。
remote_port = 8080为服务器的8080端口,通过这个端口来实现穿透服务,这个端口的范围为 1-65535。

不同穿透服务要使用不同的端口,不能有冲突,或被别的占用。


如果公网云服务器是腾讯或阿里,需要在云服务器后台“入站规则”中开启 7000 及你要开放的 remote_port 端口(如6000  8080),放行这些需要的端口。



发表评论