使用frp作为内网穿透的时候,有时候,我们需要多个端口穿透,怎么配置呢?本文来源👉:凯哥个人博客
思考:
我们知道frp要想内网穿透,需要配置服务端和客户端。如果需要直接访问80端口的话,需要还需要在nginx做配置。那么下面,咱们就从这三个方面进行详细配置:
一、frp服务端配置
在服务器上找到frps.ini配置文件,然后配置信息如下:
[common]
#穿透监听端口与地址(0.0.0.0表示允许任何地址)
bind_addr = 0.0.0.0
bind_port = 7000
# 跟frpc通讯验证密钥
token = 可以自定义的token.如果需要的话请自行配置。如果不需要,可以注释掉
subdomain_host = 访问的域名。如果需要的话修改成自己的
#服务器用以显示连接状态的站点端口,以下配置中可以通过访问IP:7500登录查看frp服务端状态等信息
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = 自定义的用户名
dashboard_pwd = 自定义的密码
#日志路径
log_file = /home/frp_0.46.1_linux_amd64/log/frps.log
#以下是配置多端口的
#端口8079是博客管理后台的项目
[tcp_blog-admin]
type = tcp
local_port = 8079
listen_port = 8079
#端口8080是博客前台项目访问地址
[tcp_blog]
type = tcp
local_port = 8080
listen_port = 8080
#端口8082是其他项目访问的
[tcp_app3]
type = tcp
local_port = 8082
listen_port = 8082
配置完成之后,如果将frp配置成随机启动的。可以直接执行以下命令,来重启frp
systemctl restart frps
扩展: Centos7下Frp服务端后台运行以及开机自启(Frp客户端同理) 。可以参考:http://www.kaigejava.com/newuiarticle/detail/769 这篇文章
二、Nginx配置
在Nginx的配置文件中添加如下配置:
# 端口8080映射到80端口
server {
listen 80;
server_name blog.xxx.com;
location ~^/ {
resolver 8.8.8.8;
proxy_pass http://$host:8080;
proxy_redirect off;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 6k;
proxy_buffers 6 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_set_header Host $http_host;
}
location ~ .*.(gif|jpg|png|bmp|swf|css|js)$ {
proxy_pass http://$host:8080;
expires 30d;
}
location ~ .*.(js|css)?$ {
expires 1d;
}
}
# 端口8079映射到80端口
server {
listen 80;
server_name blog-admin.mmmm.com;
location ~^/ {
resolver 8.8.8.8;
proxy_pass http://$host:8079;
proxy_redirect off;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 6k;
proxy_buffers 6 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_set_header Host $http_host;
}
location ~ .*.(gif|jpg|png|bmp|swf|css|js)$ {
proxy_pass http://$host:8079;
expires 30d;
}
location ~ .*.(js|css)?$ {
expires 1d;
}
}
# 端口8082映射到80端口
server {
listen 80;
server_name app3.nnn.com
.com;
location ~^/ {
resolver 8.8.8.8;
proxy_pass http://$host:8082;
proxy_redirect off;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 6k;
proxy_buffers 6 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_set_header Host $http_host;
}
location ~ .*.(gif|jpg|png|bmp|swf|css|js)$ {
proxy_pass http://$host:8082;
expires 30d;
}
location ~ .*.(js|css)?$ {
expires 1d;
}
}
需要注意:server_name 不能配置一样。如果配置一样,在执行下面的重启命令时候,会提示失败
配置完Nginx之后,需要重启Nginx的。重启命令:
/usr/local/nginx/sbin/nginx -s reload
三、frpc.ini配置
配置完frp的服务端、Nginx之后,我们现在再来配置frp客户端
[common]
server_addr = frp服务端所服务器所在的ip
server_port = 7000
token = 这里的token必须和frps.ini里面配置的一致
# 配置8079端口
[tcp_blog-admin]
type = tcp
local_ip = 127.0.0.1
local_port = 8079
remote_port = 8079
custom_domains = blog-admin.xxx.com
# 配置8080端口
[tcp_blog]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 8080
custom_domains = blog.mmmm.com
# 配置8082端口
[tcp_app3]
type = tcp
local_ip = 127.0.0.1
local_port = 8082
remote_port = 8082
custom_domains = app3.nnn.com
需要注意:custom_domains 不能配置一样。如果配置一样,在执行重启frp客户端的时候,会提示错误信息的。
配置完成之后,重启frp的客户端。 可以看到如图所示,说明已经frp多端口配置成功
如果还是不放心,可以登录frp的管理页面进行查看。
frp管理页面就是在frps.ini里面配置7500相关的用户名和密码。
访问地址就是frp服务端的ip:7500。然后输入用户名和密码,就可以访问了。在Proxies菜单下,点击TCP,可以看到对应的端口。如下图所示: