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

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

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

  • 外网云服务端:阿里云服务器 + win server + 域名+ IIS反向代理;

  • 内网服务器:win11 + 台式电脑

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

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

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

内网服务器上部署两个web网站用于演示域名内网穿透。我这里命名为:web1和web2。

IIS需要单独安装,安装教程百度很多,这里不在赘述。

IIS主要用于反向代理(隐藏域名的端口号),反向代理也可用Nginx来做(网上的反向代理教程大多使用Nginx)。但微软比较霸道,一旦你装了IIS并且部署了网站之后很难再将80端口转到Nginx下面。除非卸载IIS,只用Nginx来部署网站。我曾花费较多时间尝试将80端口转给Nginx,都失败了。最后只能用IIS来实现反向代理。

值得注意的是,IIS配置反向代理需要额外安装插件,而早期的IIS可能不支持。这里我的IIS版本为8.5。

打开网址,找到最新的frp进行下载,展开所有操作系统的安装包,选择windows版本。

安装包解压后如下图:

frpc代表client端,需要部署到公司内网服务器上;

frps代表server端,需要部署到云服务器上;

.ini文件是配置项;

frpc_full.ini和frps_full.ini 里介绍了所有frp的配置项,相当于说明文档;

将安装包发布到公网云服务器上,删除不需要的文件,保留frps.exe和frps.ini文件。

这里的目录为:C:\FTP\frp_0.48.0_windows_amd64

frps.ini文件配置如下:

[common] #记得下面2个端口在服务器上放行 # 服务端frps端口,与客户端frpc一起绑定的端口 bind_port = 7000 #web服务http接口,就是你打开网址时输入的端口号,因为80端口被禁用,所以我使用了别的 vhost_http_port = 7001

[common] 表示frp的通用配置。

bind_port 表示server端frps与client端frpc绑定的端口号。

vhost_http_port 表示http绑定的接口。

命令行:

C: cd C:\FTP\frp_0.48.0_windows_amd64 frps.exe -c ./frps.ini

frps started successfully。

frps tcp 绑定到7000端口上,http 服务绑定到7001端口上。

新建run.bat文件,用记事本打开,输入以下命令:

C: cd C:\FTP\frp_0.48.0_windows_amd64 frps.exe -c ./frps.ini

保存后,鼠标单击run.bat即可手动运行。

如上图表示server端运行成功。

配置frps开机自启动的方式:

将bat文件复制到:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup下,重命名为:frp内网穿透开机自启.bat。

这样以后,只要云服务器开机之后就会自动运行frps.exe文件。

将安装包发布到公司内网服务器上,删除不需要的文件,保留frpc.exe和frpc.ini文件。

这里的目录为:G:\frp\frp_0.48.0_windows_amd64

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

[common] 表示frp的通用配置;

server_addr 表示server端的公网ip地址;

server_port 表示server端frps绑定的端口;

[web1] 这里的[web1]表示一个网站的名称,可以自定义;

type表示请求的类型,我们用的是http;

local_port 表示本机端口,也就是网站web1在本机绑定的端口号;

custom_domains 表示用户通过浏览器访问网站web1的域名;

web2同理。

命令行:

G: cd G:\qainyuhui\frp_0.48.0_windows_amd64 frpc.exe -c ./frpc.ini

新建run.bat文件,用记事本打开,输入一下命令:

G: cd G:\qainyuhui\frp_0.48.0_windows_amd64 frpc.exe -c ./frpc.ini

保存后,鼠标单击run.bat即可手动运行。

如上图表示client端运行成功,并且成功登陆到server端,网站[web1]、[web2]成功加入到协议中。

与此同时,云服务器(server端)也会输出同样的日志信息:

配置frpc开机自启动的方式:

将bat文件复制到:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup下,重命名为:frpc内网穿透开机自启.bat。

这样以后,只要内网服务器开机之后就会自动运行frpc.exe文件。

至此,frp的职责已经完成了。剩下的工作就要交给反向代理去将7001端口隐藏掉。

云服务器端,可以通过反向代理隐藏掉7001端口。

默认情况下web.config内容如下:

我们在<system.webServer>节点中添加重写规则:

<rewrite> <rules> <rule name="web1.whqyjy.com"> <match url="^(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^web1.whqyjy.com$" /> </conditions> <action type="Rewrite" url="http://web1.whqyjy.com:7001/{R:1}" /> </rule> <rule name="web2.whqyjy.com"> <match url="^(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^web2.whqyjy.com$" /> </conditions> <action type="Rewrite" url="http://web2.whqyjy.com:7001/{R:1}" /> </rule> </rules> </rewrite> 

保存web.config,重启Default Web Site 网站。即可生效。

原文链接:https://blog.csdn.net/guigenyi/article/details/129658156

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享