概述
背景
需要远程访问办公环境的内网服务器,原来使用的是花生壳之类的软件,但是存在很多不确定性,最近研究了一下开源内网穿透软件frp,总结了一些心得,分享一下。
条件
- 一台具有公网IP的服务器,可以购买一台云服务器
- 内网服务器若干,本次以一台为例
- frp软件,server端和client端
- nginx服务,作为多个http服务的转发
目的
- 实现mysql的访问
- 实现redis的访问
- 实现多个http服务的访问,因为frp转发http的端口,只能设定一个,所以需要一个nginx做所有http服务的转发,可以使用前缀匹配的方式。
- 服务均以docker-compose形式安装,如果对docker不熟悉,请自行学习
安装
FRP的Server安装
1、在服务器上创建frp目录
mkdir -p /data/frp
2、创建frps.ini
vi frps.ini
[common]
bind_port = 17000
#与客户端的token必须设置成一致
token = 42974813dsadaqefaaa336c4eq9864bc
vhost_http_port = 10086
#vhost_http_port = 8001
#vhost_https_port = 10443
dashboard_port = 17500
dashboard_user = admin
dashboard_pwd = admin
tcp_mux = true
max_pool_count = 10
3、创建docker-compose-frps.yml
vi docker-compose-frps.yml
version: '3'
services:
frps:
image: snowdreamtech/frps
ports:
- "17000:17000"
- "27500:17500"
- "10022:10022" #用于ssh连接
- "10086:10086" #用于开放给外网访问http服务
- "13306:13306" #用于开放给外网访问mysql
- "16380:16380" #用于开放给外网访问redis
# 更多端口根据实际需求增加
volumes:
- ./frps.ini:/etc/frp/frps.ini
container_name: frps
environment:
TZ: Asia/Shanghai
restart: always
4、启动frp服务
docker-compose -f docker-compose-frps.yml up -d
至此,frp的server的服务启动成功,可以通过frp的管理界面查看
FRP Client部署
1、在内网客户端服务器上创建frp目录
mkdir -p /data/frp
2、创建frpc.ini
vi frpc.ini
[common]
#服务器ip
server_addr = 89.170.157.7 #你的frp的server的ip
server_port = 17000
#与客户端的token必须设置成一致
token = 42974813eqeqeqfaaa336c47b2abf7ae9864bc
[ssh]
type = tcp
local_ip = 192.168.1.10
local_port = 22
remote_port = 10022
use_encryption = true
use_compression = true
[http]
type = http
local_ip = 192.168.1.10
local_port = 10086
remote_port = 10086
custom_domains = 89.170.157.7 #你的frp的server的ip
[mysql]
type = tcp
local_ip = 192.168.1.10
local_port = 3306
remote_port = 13306
custom_domains = 89.170.157.7 #你的frp的server的ip
[redis]
type = tcp
local_ip = 192.168.1.10
local_port = 6380
remote_port = 16380
custom_domains = 89.170.157.7 #你的frp的server的ip
3、创建docker-compose-frpc.yml
vi docker-compose-frpc.yml
version: '3'
services:
frpc:
image: cloverzrg/frpc-docker
volumes:
- ./frpc.ini:/conf/frpc.ini
container_name: frpc
network_mode: host
4、启动服务
docker-compose -f docker-compose-frpc.yml up -d
安装redis和mysql服务
该部分自动安装可验证
省略
安装Http服务
端口为8001
安装Nginx服务
使用docker-compose-nginx.yml安装
version: '3'
services:
nginx:
image: nginx:latest
restart: always
container_name: nginx
network_mode: host
ports:
- 10086:10086
volumes:
- /data/aiaas/logs/nginx:/var/log/nginx
- /data/aiaas/nginx/conf.d:/etc/nginx/conf.d
environment:
- TZ=Asia/Shanghai
logging:
options:
max-size: '100m'
max-file: '10'
配置nginx的转发
vi nginx/conf.d/default.conf
client_max_body_size 500m;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 5;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/json;
add_header r-Upstream $upstream_addr;
client_header_buffer_size 5k;
large_client_header_buffers 8 16k;
server {
listen 80 default_server;
server_name _;
return 404;
#access_log off;
}
server {
listen 10086;
#server_name admin.aicc.lingban.cn;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
#location / {
# proxy_pass http://127.0.0.1:8001;
#}
#所有以web开头前缀的URL,都做转发,且替换web这个前缀
location ^~/web/ {
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 X-NginX-Proxy true;
proxy_pass http://127.0.0.1:8001/;
}
location ~* .(?:jpg|jpeg|gif|png|ico|cur|gz|svgz|mp4|ogg|ogv|webm|htc)$ {
expires 1M;
access_log off;
add_header Cache-Control "public";
proxy_pass http://127.0.0.1:8001;
}
# CSS and Javascript
location ~* .(?:css|js)$ {
expires 1M;
access_log off;
add_header Cache-Control "public";
proxy_pass http://127.0.0.1:8001;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
5、测试验证,通过访问,访问的ip为frp server的ip
至此,所有验证成功。
最后
以上就是纯真楼房为你收集整理的使用FRP作为内网穿透服务背景条件目的安装的全部内容,希望文章能够帮你解决使用FRP作为内网穿透服务背景条件目的安装所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复