内网穿透并绑定自己的域名-frp

本文详细介绍如何使用frp软件实现内网穿透,包括环境需求、frp配置、nginx配置及https配置,让读者能够轻松掌握内网穿透技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:环境需求

一台有公网ip的机器,一台内网的机器(以树莓派为例)

使用软件:nginxfrp

frp软件地址:https://github.com/fatedier/frp

申请自己的域名,并将域名解析到公网ip(可以为三级或四级域名)

二:frp配置

我们首先需要根据自己的机型下载适合的版本,要注意的是服务器与客户端都要使用同一个frp版本

下载地址:https://github.com/fatedier/frp/releases

比如我使用的树莓派是arm系统的,就选择了最新版本的linux_arm版本,下载完成后解压,进入

服务器:

服务器修改的是frps.ini配置文件

 [common]
 bind_port = 7000  # 绑定本机的端口
 vhost_http_port = 7001  #http访问的端口
 subdomail_host = pi.liunaijie.top # 自己的域名

然后后台启动即可:nohup ./frps -c ./frps.ini &

默认日志为nohup.out,可以查看这个文件查看frp是否正常启动

树莓派(或其他内网机器)

客户端修改frpc.ini配置文件

[common]
server_addr = x.x.x.x #公网的ip地址
server_port = 7000 # 服务器开启的端口

[ssh]  # 开启ssh
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 # 远程ssh端口

[web] # web服务
type = http 
local_port = 80 
custom_domains = pi.liunaijie.top  # 我们自己的域名,可以通过这个域名访问这个机器

然后后台启动服务nohup ./frpc -c ./frpc.ini &。要注意的是我们要先开启服务器的服务,不然本地是无法开启的。

三:nginx配置

如果按照官网的文档这样就配置完成了,但是我的服务器并不只是作为这个内网穿透的功能,还有其他的功能,并且是通过nginx进行转发,所以还需要配置ningx。

。。。其他设置。。。
server {
          listen 80; #监听http的80端口
          server_name pi.liunaijie.top;  # 这是我们设置的域名
          access_log  logs/pi_liunaijie.log  main; # 记录日志
          location / {
                  proxy_pass http://127.0.0.1:7001; # 转发到我们在frps.ini中设置的vhost_http_port端口
                  proxy_set_header    Host            $host:80;  #不添加这行时访问需要 域名:7001才能访问到内网的机器,如果加了就不再需要后面的端口,直接使用域名访问
                  proxy_set_header    X-Real-IP       $remote_addr;
                  proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
                  proxy_hide_header   X-Powered-By;
          }
  
}
。。。其他设置。。。

四:https配置

首先在frps.ini中进行添加https的配置

 [common]
 bind_port = 7000  # 绑定本机的端口
 vhost_http_port = 7001  #http访问的端口
 vhost_https_port = 7002 # https的端口
 subdomail_host = pi.liunaijie.top # 自己的域名

frpc.ini中修改配置

...省略...
type = https 
local_port = 443 
custom_domains = pi.liunaijie.top  # 我们自己的域名,可以通过这个域名访问这个机器

然后开启服务我们可以通过我们设置的域名加端口进行访问,例如以我上面的配置就需要https://pi.liunaijie.top:7002来进行访问。但是我不想使用后面的端口所以又进行修改了nginx的配置文件

...省略...
server {
	listen 443 ssl;
	server_name pi.liunaijie.top;
	charset utf-8;
	ssl_certificate /usr/local/nginx/cert/pi.liunaijie.top.pem;
	ssl_certificate_key /usr/local/nginx/cert/pi.liunaijie.top.key;
	access_log  logs/pi_liunaijie.log  main;
	location / {
		resolver 8.8.8.8;
		proxy_ssl_server_name on;
		proxy_pass https://$host:7002;
		proxy_set_header    Host            $host:$server_port;
		proxy_set_header    X-Real-IP       $remote_addr;
		proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_hide_header   X-Powered-By;
	}

}

其中有很重要的几条配置,一定要注意,不然还是没法不加端口进行访问
resolver 8.8.8.8; # 这个最重要 不加这个就是502,加了就好了 也不知道是为什么

我现在是http与https并存,如果只想使用https可以在nginx的80端口进行跳转

到此我们就完成了通过我们预定义的域名访问在内网中的机器。

### FRP 内网穿透绑定域名配置方法 #### 准备工作 为了实现FRP内网穿透绑定自定义域名,需先下载适合操作系统的FRP版本。对于Linux AMD64系统而言,可执行如下命令获取最新版的FRP软件包[^3]: ```bash wget https://github.com/fatedier/frp/releases/download/v0.51.2/frp_0.51.2_linux_amd64.tar.gz ``` 创建专门用于存放FRP文件夹,解压下载好的压缩包至该目录下: ```bash mkdir /home/nat && tar -xvf frp_0.51.2_linux_amd64.tar.gz -C /home/nat/ ``` 确保已安装文本编辑器如Vim以便后续修改配置文件: ```bash sudo apt install vim ``` #### 服务端(Server Side)设置 进入`/home/nat`路径下的FRP文件夹中找到名为`frps.ini`的服务端配置文件,利用Vim或其他偏好使用的编辑工具打开它进行必要的参数调整: - `bind_port`: 设定客户端连接此端口来建立通信链路; - `vhost_http_port`, `vhost_https_port`: 分别指定HTTP(S)请求转发的目标端口号,默认情况下分别为80和443; - `dashboard_*`: 提供监控面板的相关设定项。 具体实例化后的部分配置可能看起来像这样: ```ini [common] bind_port = 7000 vhost_http_port = 8080 vhost_https_port = 443 ... token = your_secret_token_here ``` 注意,在实际部署过程中应当依据个人环境适当更改上述数值以及补充其他所需选项,比如启用Prometheus指标收集功能等高级特性。 #### 客户端(Client Side)设置 同样地,在本地计算机上也需要准备一份类似的初始化过程——即下载对应平台架构的二进制分发包、提取到合适位置之后再着手于客户机侧专属的部分——也就是位于同一级目录里的另一个INI文档:`frpc.ini`. 针对希望暴露给公网访问的应用程序来说,这里的关键在于正确定义隧道规则,特别是当涉及到HTTPS协议时更要注意细节处理。下面给出了一段示范性的片段说明如何关联特定主机名(pi.liunaijie.top),通过SSL加密通道将其映射回内部网络中的某台设备监听着的标准安全Web服务器接口(443)[^1]: ```ini [https_service_name] type = https local_ip = 127.0.0.1 local_port = 443 custom_domains = pi.liunaijie.top ``` 完成以上步骤后保存所做的全部改动;最后分别启动两处节点上的守护进程即可生效整个方案的效果验证阶段了!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值