FRP内网穿透(域名绑定+Nginx署理+HTTPS支持+SSH登录)

分享
计算机软件开发 2024-9-26 10:51:16 109 0 来自 中国
一、先容

内网穿透,网上有多种方案,有些是付费的,有些是开源的,实在各有优劣,付费的不必要本身拥有服务器,而开源的好比FRP则必要有一台公网的服务器,假如你拥有一台公网服务器(服务器可能不是你买的,但是你有使用权限大概说该服务器性能要差点),但是摆设的软件如网站、gitlab等想放在本身的物理电脑上,那使用FRP举行内网穿透将是比力好的选择,有比力强的机动性
告急能实现的功能:
1:外网通过域名访问本身电脑上恣意端口步伐;
2:外网ssh登录本身电脑;
3:总之云服务器能有的功能,大部分都可以摆设到本身电脑上;
网上也有较多FRP内网穿透的文章,但是看的有点乱,我将联合实际穿透过程将每一步纪录下来,各人按照步调来是可以乐成完成穿透的(可能看着步调有点多,但是一步步完成实际照旧简单的),总的来说只必要改三个文件(设置文件放在文末):
1:服务端的frps.ini文件
2:服务端的nginx.conf文件
3:客户端的frpc.ini文件


官网文档:https://gofrp.org/docs/overview/
必要的资源:

1:域名(没有域名只能通过ip举行访问),这里我申请的域名是:www.leachchen.com
2:一台云服务器(FRP内网穿透必要依靠公网服务器,若没有服务器的同砚,可以在网上找其他内网穿透方案也有比力多,不外功能全点的要付费)
3:一台本身的物理电脑(我的是win10+ubuntu双体系,ubuntu体系作为物理服务器)
4:FRP客户端,github地点 https://github.com/fatedier/frp/releases
二、目标

我在本身物理电脑上安装了nginx(默认端口80)和gitlab(gitlab端口我设置成8000)
本地可以通过http://127.0.0.1访问网站
本地可以通过http://127.0.0.1:8000访问代码服务器
盼望能做到:
1:通过https://www.leachchen.com 访问物理电脑上的网站
2:通过https://xxx.leachchen.com 访问物理电脑上的代码堆栈(xxx,本身可以在域名平台设置你想要的域名前缀)
三、设置过程

我申请的域名是www.leachchen.com,假设服务器IP是100.10.10.10

第一步(云服务器FRP客户端设置):

1:下载FRP客户端,下载地点上面有提供,我其时下载的最新版
2:解压
1:tar xvf frp_0.44.0_linux_amd64.tar.gz2:cd frp_0.44.0_linux_amd64.tar.gz3:vim frps.ini  这里注意是frps.ini,客户端是frpc.ini3:设置frps.ini(详细寄义注意看设置里的表明)
[common]# frp监听的端口,默认是7000,可以改成其他的bind_port = 7000# 授权码本身可以任意取,客户端设置必要与服务端设置保持同等token = 123123# 对user开放的web访问端口vhost_http_port = 81#通过ssh登录时的端口[ssh]listen_port = 6000# frp管理配景端口,请按本身需求更改,可通过http://服务器IP:7500访问配景管理体系,如:http://100.10.10.10:7500dashboard_port = 7500# frp管理配景用户名和暗码,请改资源身的dashboard_user = admindashboard_pwd = adminenable_prometheus = true# frp日志设置log_file = /var/log/frps.loglog_level = infolog_max_days = 34:运行:nohup ./frps -c ./frps.ini &
5:此时服务端会运行起以下端口:
7000,frp软件
81,服务端的web端口,好比通过http://100.10.10.10:81就能访问到物理机上的nginx网站,不能用80端口会跟云服务端的nginx 80端口冲突
6000,用于ssh登录的
7500,frp看板体系,可通过http://服务器IP:7500举行访问
第二步(客户端FRP客户端设置,在本身物理机上):

1:下载FRP客户端,下载地点上面有提供,我其时下载的最新版
2:解压
1:tar xvf frp_0.44.0_linux_amd64.tar.gz2:cd frp_0.44.0_linux_amd64.tar.gz3:vim frpc.ini3:设置frpc.ini(详细寄义注意看设置里的表明)
# 客户端设置[common] #这里填你本身实际的域名,要是没有域名这里填云服务器公网ipserver_addr = www.leachchen.com#与frps.ini的bind_port同等server_port = 7000#与frps.ini的token同等token = 123123#设置ssh服务[ssh]type = tcplocal_port = 22#与服务器ssh部分listen_port保持同等remote_port = 6000[web]type = httplocal_port = 80#这里填你本身实际的域名,要是没有域名这里填云服务器公网ipcustom_domains = www.leachchen.com [gitlab]type = httplocal_port = 8000#这里填你本身实际的域名,要是没有域名这里填云服务器公网ipcustom_domains = xxx.leachchen.com4:运行:nohup ./frpc -c ./frpc.ini &
第三步(域名与云服务器IP绑定)

我的是阿里云的域名,差异服务商绑定过程都差不多,这里告急将www、gitlab这两个与云服务器IP举行绑定

2.png 第四步(Nginx设置)

1:访问www.leachchen.com时默认是80端口,此时将请求转发到81端口上,frp服务端和客户端保持了毗连,此时会访问到客户端设置了类似域名的端口上
2:访问xxx.leachchen.com时默认是80端口,此时将请求转发到81端口上,frp服务端和客户端保持了毗连,此时会访问到客户端设置了类似域名的端口上
若不必要支持https,则将这几行表明掉:
listen 443 ssl;
ssl_certificate /root/temp/ssl/xxx.pem;
ssl_certificate_key /root/temp/ssl/xxx.key;
nginx设置文件路径:/etc/nginx/nginx.conf,有些是在/etc/nginx/sites-enabled/default
user root;worker_processes 4;pid /run/nginx.pid;events {    worker_connections 768;    # multi_accept on;}http {    include /etc/nginx/conf.d/*.conf;    include /etc/nginx/sites-enabled/*;    server {                listen 80;        listen 443 ssl;                ssl_certificate /root/temp/ssl/xxx.pem; #在域名服务商申请的证书,差异的域名证书不一样                ssl_certificate_key /root/temp/ssl/xxx.key; #在域名服务商申请的证书,差异的域名证书不一样                server_name  www.leachchen.com;  #这里填你本身实际的域名                client_max_body_size 10M;                location / {                    proxy_pass http://127.0.0.1:81;    #访问www.leachchen.com时默认是80端口,此时将请求转发到81端口上,frp服务端和客户端保持了毗连,此时会访问到客户端设置了类似域名的端口上                    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 {                listen 80;                listen 443 ssl;                ssl_certificate /root/temp/ssl/yyy.pem;     #在域名服务商申请的证书,差异的域名证书不一样                 ssl_certificate_key /root/temp/ssl/yyy.key; #在域名服务商申请的证书,差异的域名证书不一样                server_name xxx.leachchen.com; #这里填你本身实际的域名                client_max_body_size 10M;                location / {                    proxy_pass http://127.0.0.1:81;     #访问xxx.leachchen.com时默认是80端口,此时将请求转发到81端口上,frp服务端和客户端保持了毗连,此时会访问到客户端设置了类似域名的端口上                    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;                }        }}到此就完成了物理机上的网站,通过https域名举行外网访问
SSH登录(通过putty登录):

输入物理机的账号暗码就可以举行登录了

设置文件下载:https://github.com/leach-chen/FRP

个人网站:https://www.leachchen.com/
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-25 09:22, Processed in 0.185456 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表