基于https+域名的Frp内网穿透教程(Linux+Nginx反向代理)

系列文章目录

基于http+公网ip的Frp内网穿透教程(win server)

基于http+域名的Frp内网穿透教程(win server+IIS反向代理)

基于http+公网ip的Frp内网穿透教程(Linux)

基于https+域名的Frp内网穿透教程(Linux+Nginx反向代理)


目录

系列文章目录

前言

一、Frp是什么?

[1. Frp介绍](#1. Frp介绍)

[2. Frp工作原理](#2. Frp工作原理)

二、配置手册

[1. 准备工作](#1. 准备工作)

[1.1 公网云服务器(server端):](#1.1 公网云服务器(server端):)

[1.2 公司内网服务器(client端):](#1.2 公司内网服务器(client端):)

[2. 实操篇](#2. 实操篇)

[2.1 公网云服务器(server端):](#2.1 公网云服务器(server端):)

配置frps.ini

运行frps.exe:

配置frps开机自启

公司内网服务器端

将frp软件拷贝到公司内网服务器上

配置frpc.ini

运行frpc.exe:

配置frpc开机自启

通过域名+7001端口访问网站

反向代理隐藏端口(IIS)

大功告成


前言

我在文章基于HTTP+公网ip的Frp内网穿透教程(win server)中已经介绍了公网ip的Frp内网穿透教程,本文主要介绍https+域名(无端口)的Frp内网穿透配置教程。

写本文主要是做一个记录,以便以后需要再次配置内网穿透时有所参考。如对您有所帮助不甚荣幸。

本文主要涉及的软硬件条件为:

  • 外网云服务端:阿里云服务器 + Alibaba Cloud Linux + 域名 + Nginx反向代理;
  • 内网服务器:Ubuntu + 台式电脑;

一、Frp是什么?

1. Frp介绍

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网

2. Frp工作原理

FRP是一种内网穿透工具,主要用于将内网的服务暴露到公网上。它的工作原理可以简单概括为以下几个步骤:

  1. 在公网服务器上部署FRP服务器,并在内网主机上部署FRP客户端。
  2. 在FRP服务器上配置一个公网端口,用于接收来自公网的请求。
  3. 在FRP客户端上配置一个本地端口,指定需要暴露到公网的服务端口号。
  4. 当有来自公网的请求访问FRP服务器上的公网端口时,FRP服务器会将请求转发到内网主机上的FRP客户端,并将请求转发给客户端上配置的本地端口。
  5. FRP客户端收到请求后,会将请求转发到本地服务端口上,从而实现将内网服务暴露到公网上的目的。

需要注意的是,FRP还可以通过配置反向代理来实现多个内网主机的服务共享一个公网IP的功能。此时,FRP服务器会根据请求中指定的域名将请求转发到不同的内网主机上,从而实现内网服务的多路复用。

总之,FRP的工作原理是通过在公网和内网之间建立一个通道,将公网请求转发到内网主机上的服务端口,从而实现内网服务的暴露和共享。

二、配置手册

1. 准备工作

1.1 公网云服务器(server端):

阿里云服务器

操作系统:Alibaba Cloud Linux

反向代理工具:Nginx

阿里云暴露端口:7000、7001、80、443

域名:web.qianyuhui.top

公网ip:139.224.x.x(域名需要解析到公网Ip上)

​​

1.2 公司内网服务器(client端):

操作系统:Ubuntu 22.04

内网ip:192.168.31.31

设置防火墙暴露端口:7000、7001、9001、9002

准备好1个web网站:

**2.**实操篇

2.1 公网云服务器(server端)

2.1.1 下载Frp安装包

bash 复制代码
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz

解压:

bash 复制代码
tar zxf frp_0.44.0_linux_amd64.tar.gz

移动至 /usr/local

在/usr/local/下创建一个frp文件夹。/usr/local目录类似于windows系统的C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下:

bash 复制代码
mkdir /usr/local/frp

将frp_0.44.0_linux_amd64移动到 /usr/local/frp 里面:

bash 复制代码
mv frp_0.44.0_linux_amd64/* /usr/local/frp/

进入文件夹:

bash 复制代码
cd /usr/local/frp/

列表显示根目录下的文件:

bash 复制代码
ls

frps就是frp server端的部分;frpc 是frp client端的部分。这里我们只需要关心Server端。

这里我们可以直接删掉frpc、frpc_full.ini、frpc.ini三个文件,节省硬盘空间

bash 复制代码
find . -name 'frpc*' -exec rm {} \;

2.1.2 修改配置文件:frps.ini

bash 复制代码
vi frps.ini 

键入【i】,修改内容如下:

bash 复制代码
[common]
# frp server 绑定的端口
bind_port = 7000 
# 设置 http 访问端口为 80
vhost_http_port = 80
# 设置域名(保证此域名可用;我们假设你的域名为【subdomain.yourdomain.com】)
subdomain_host = yourdomain.com

【bind_port】:frp客户端连接服务端的端口

【vhost_http_port】:是http访问的端口(外网端口)。我这里设置成80端口。也就是说,在配置正确的前提下,外网可以通过浏览器直接访问【http://47.99.x.x】访问内网服务。

【subdomain_host】:你的一级域名。我们假设你的域名为:【subdomain.yourdomain.com】。【subdomain】是二级域名,【yourdomain.com】是一级域名。如果不需要用到域名则不需要配置此项。

注意\]: 建议1:不要加注释。我在配置ini的时候,加了注释好像会报错。 建议2:新手建议只设置这两个,设置越多越容易出错。建议走通后再慢慢改。 修改完成后。按下Esc退出编辑模式。然后输入:wq保存并退出。 #### **配置frps.ini** frps.ini文件配置如下: [common] #记得下面2个端口在服务器上放行 # 服务端frps端口,与客户端frpc一起绑定的端口 bind_port = 7000 #web服务http接口,就是你打开网址时输入的端口号,因为80端口被禁用,所以我使用了别的 vhost_http_port = 7001 ![](https://i-blog.csdnimg.cn/blog_migrate/dcd2d66c61680dd385118da587a35c61.png)​​ \[common\] 表示frp的通用配置。 bind_port 表示server端frps与client端frpc绑定的端口号。 vhost_http_port 表示http绑定的接口。 #### **运行frps.exe:** 终端手动运行方式: 命令行: C: cd C:\FTP\frp_0.48.0_windows_amd64 frps.exe -c ./frps.ini ![](https://i-blog.csdnimg.cn/blog_migrate/75c00872df36ac0452ce7aced8c5e9be.png)​​ frps started successfully。 frps tcp 绑定到7000端口上,http 服务绑定到7001端口上。 bat脚本运行方式: 新建run.bat文件,用记事本打开,输入以下命令: C: cd C:\FTP\frp_0.48.0_windows_amd64 frps.exe -c ./frps.ini ![](https://i-blog.csdnimg.cn/blog_migrate/2b4197ba9f7d60f9241428d71853ec6b.png)​​ 保存后,鼠标单击run.bat即可手动运行。 ![](https://i-blog.csdnimg.cn/blog_migrate/5f565e54d76a39fb21f27bcb5e8ddf7f.png)​​ 如上图表示server端运行成功。 #### **配置frps开机自启** 配置frps开机自启动的方式: 将bat文件复制到:C:\\Users\\Administrator\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup下,重命名为:frp内网穿透开机自启.bat。 这样以后,只要云服务器开机之后就会自动运行frps.exe文件。 ![](https://i-blog.csdnimg.cn/blog_migrate/054a90744d86edeafd28b20bd8cf60a0.png)​​ ### **公司内网服务器端** #### **将frp软件拷贝到公司内网服务器上** 将安装包发布到公司内网服务器上,删除不需要的文件,保留frpc.exe和frpc.ini文件。 这里的目录为:G:\\frp\\frp_0.48.0_windows_amd64 ![](https://i-blog.csdnimg.cn/blog_migrate/4ad16462279a4bf5166a98db10168e85.png)​​ #### **配置frpc.ini** frpc.ini文件配置如下: [common] #外部云服务器地址+设置的端口 server_addr = 8.136.x.x server_port = 7000 #第一个web网站,端口号为内部对应端口,及对应访问网址,这个网址需要在外部云服务器上绑定 [web1] type = http local_port = 9001 custom_domains = web1.whqyjy.com #第二个web网站,端口号为内部对应端口,及对应访问网址,这个网址需要在外部云服务器上绑定 [web2] type = http local_port = 9002 custom_domains = web2.whqyjy.com ![](https://i-blog.csdnimg.cn/blog_migrate/4ceab65df789acdf6813af1ac9db8124.png)​​ \[common\] 表示frp的通用配置; server_addr 表示server端的公网ip地址; server_port 表示server端frps绑定的端口; \[web1\] 这里的\[web1\]表示一个网站的名称,可以自定义; type表示请求的类型,我们用的是http; local_port 表示本机端口,也就是网站web1在本机绑定的端口号; custom_domains 表示用户通过浏览器访问网站web1的域名; web2同理。 #### **运行frpc.exe:** 终端手动运行方式: 命令行: G: cd G:\qainyuhui\frp_0.48.0_windows_amd64 frpc.exe -c ./frpc.ini bat脚本运行方式: 新建run.bat文件,用记事本打开,输入一下命令: G: cd G:\qainyuhui\frp_0.48.0_windows_amd64 frpc.exe -c ./frpc.ini ![](https://i-blog.csdnimg.cn/blog_migrate/d363a3fff246c00f1137f96e70bd3a3d.png)​​ 保存后,鼠标单击run.bat即可手动运行。 ![](https://i-blog.csdnimg.cn/blog_migrate/93e6548069d8b23653a49ee2be4f8699.png)​​ 如上图表示client端运行成功,并且成功登陆到server端,网站\[web1\]、\[web2\]成功加入到协议中。 与此同时,云服务器(server端)也会输出同样的日志信息: ![](https://i-blog.csdnimg.cn/blog_migrate/c14cd8259fc723c31f25218efa6ec0ae.png)​​ #### **配置frpc开机自启** 配置frpc开机自启动的方式: 将bat文件复制到:C:\\Users\\Administrator\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup下,重命名为:frpc内网穿透开机自启.bat。 这样以后,只要内网服务器开机之后就会自动运行frpc.exe文件。 ![](https://i-blog.csdnimg.cn/blog_migrate/6ca1687a82eeaf110499405b6726d996.png)​​ #### 通过域名+7001端口访问网站 内网穿透已经配置成功,我们现在可以在外网环境中通过域名+端口的形式访问web1和web2:[web1.whqyjy.com:7001](https://web1.whqyjy.com:7001/ "web1.whqyjy.com:7001")、[web2.whqyjy.com](https://web2.whqyjy.com/ "web2.whqyjy.com") ![](https://i-blog.csdnimg.cn/blog_migrate/82b86f25178bc5a61a3c730fc6d12061.png)​​ ![](https://i-blog.csdnimg.cn/blog_migrate/d9ee50d757fcde2fbf6523eec43bc954.png)​​ 至此,frp的职责已经完成了。剩下的工作就要交给反向代理去将7001端口隐藏掉。 #### 反向代理隐藏端口(IIS) **云服务器端**,可以通过反向代理隐藏掉7001端口。 这里我使用IIS进行反向代理操作。参考文章:[IIS的反向代理](https://zhuanlan.zhihu.com/p/403282528 "IIS的反向代理") IIS插件安装 IIS配置反向代理需要依靠两个插件:[Application Request Routing(ARRv3.0)](https://www.iis.net/downloads/microsoft/application-request-routing "Application Request Routing(ARRv3.0)")、[Url-Rewite](https://www.iis.net/downloads/microsoft/url-rewrite "Url-Rewite")。如果您的IIS中没有安装需要单独安装插件。安装教程可参考[IIS的反向代理](https://zhuanlan.zhihu.com/p/403282528 "IIS的反向代理")。 ![](https://i-blog.csdnimg.cn/blog_migrate/bbbbf21d4d0bb0a7ab88ca432e8a2925.png)​​ 反向代理设置 ![](https://i-blog.csdnimg.cn/blog_migrate/8c556d49caf7c1d315176d151cf2e94a.png)​​ IIS中打开占用服务器80端口的网站(IIS默认中是Default Web Site),点击右上角浏览Default Web Site所在文件夹。 windows中Default Web Site的默认地址一般为:C:\\inetpub\\wwwroot。我们需要修改web.config进行反向代理的配置。配置之前请确保您已经安装好[Application Request Routing(ARRv3.0)](https://www.iis.net/downloads/microsoft/application-request-routing "Application Request Routing(ARRv3.0)")、[Url-Rewite](https://www.iis.net/downloads/microsoft/url-rewrite "Url-Rewite")这两个插件,否则配置无法生效。 ![](https://i-blog.csdnimg.cn/blog_migrate/e0d6dae27bf2334e1c0a9a66f453215d.png)​​ 默认情况下web.config内容如下: ![](https://i-blog.csdnimg.cn/blog_migrate/10b068cf6c0a1f71f642491fb516ff80.png)​​ 我们在\节点中添加重写规则: 意思就是说:让云服务器上的IIS将用户输入的URL:【[web1.whqyjy.com](https://web1.whqyjy.com/ "web1.whqyjy.com")】转成【[http://web1.whqyjy.com:7001](http://web1.whqyjy.com:7001/ "http://web1.whqyjy.com:7001")】,web2同理。 ![](https://i-blog.csdnimg.cn/blog_migrate/e4cf208021308bd11f254209d22db87c.png)​​ 保存web.config,重启Default Web Site 网站。即可生效。 ![](https://i-blog.csdnimg.cn/blog_migrate/47ce7cd286421d83b7845d18296d038b.png)​​ ### 大功告成 配置完成之后,我们在外网环境中访问[http://web1.whqyjy.com](http://web1.whqyjy.com/ "http://web1.whqyjy.com")和 [http://web2.whqyjy.com](http://web2.whqyjy.com/ "http://web2.whqyjy.com").就可以访问内网中的web1和web2了。 ![](https://i-blog.csdnimg.cn/blog_migrate/c6637d6bb2db42ac0f9beca6b808aff3.png)​​ ![](https://i-blog.csdnimg.cn/blog_migrate/4279486171e7f73f2f844c8f968d7a36.png)​​

相关推荐
kinlon.liu1 个月前
内网穿透 FRP 配置指南
后端·frp·内网穿透
caolib1 个月前
无需云服务器的内网穿透方案 -- cloudflare tunnel
运维·服务器·内网穿透·tunnel·cloudflared
阿杜杜不是阿木木2 个月前
使用frp内网穿透:将本地服务暴露到公网
frp·内网穿透·frpc·nps·frps
行而不知2 个月前
家庭网络中的服务器怎么对外提供服务?
运维·服务器·内网穿透·ddns
靡樊2 个月前
NAT、代理服务、内网穿透
网络·内网穿透·nat·代理服务·内网打洞
Lois_Luo2 个月前
使用 DigitalPlat 免费搭配 Cloudflare Tunnel 实现飞牛系统、服务及 SSH 内网穿透教程
ssh·内网穿透
小声读源码3 个月前
【技巧】使用frpc安全地内网穿透ssh访问内网机器
运维·安全·ssh·内网穿透·frpc
漫无目的行走的月亮3 个月前
windows内网穿透
内网穿透
小铁Winner3 个月前
高性价比国内外VPS/云服务器推荐【附优惠码】 2025/6/12更新
内网穿透·vps·推荐·云服务器