基于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介绍

2. Frp工作原理

二、配置手册

1. 准备工作

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

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

2. 实操篇

        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安装包

wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz

 解压:

tar zxf frp_0.44.0_linux_amd64.tar.gz

移动至 /usr/local

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

mkdir /usr/local/frp

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

mv frp_0.44.0_linux_amd64/* /usr/local/frp/

进入文件夹:

cd /usr/local/frp/

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

ls

 frps就是frp server端的部分;frpc 是frp client端的部分。这里我们只需要关心Server端。
这里我们可以直接删掉frpc、frpc_full.ini、frpc.ini三个文件,节省硬盘空间

find . -name 'frpc*' -exec rm {} \;

 

               2.1.2 修改配置文件:frps.ini

vi frps.ini 

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

[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

​​

[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

​​

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

​​

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

​​

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

配置frps开机自启

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

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

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

​​

公司内网服务器端

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

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

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

​​

配置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

​​

[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

​​

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

​​

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

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

​​

配置frpc开机自启

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

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

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

​​

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

内网穿透已经配置成功,我们现在可以在外网环境中通过域名+端口的形式访问web1和web2:web1.whqyjy.com:7001、web2.whqyjy.com

​​

​​

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

反向代理隐藏端口(IIS)

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

这里我使用IIS进行反向代理操作。参考文章:IIS的反向代理

IIS插件安装

IIS配置反向代理需要依靠两个插件:Application Request Routing(ARRv3.0)、Url-Rewite。如果您的IIS中没有安装需要单独安装插件。安装教程可参考IIS的反向代理。

​​

反向代理设置

​​

IIS中打开占用服务器80端口的网站(IIS默认中是Default Web Site),点击右上角浏览Default Web Site所在文件夹。

windows中Default Web Site的默认地址一般为:C:\inetpub\wwwroot。我们需要修改web.config进行反向代理的配置。配置之前请确保您已经安装好Application Request Routing(ARRv3.0)、Url-Rewite这两个插件,否则配置无法生效。

​​

默认情况下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>

意思就是说:让云服务器上的IIS将用户输入的URL:【web1.whqyjy.com】转成【http://web1.whqyjy.com:7001】,web2同理。

​​

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

​​

大功告成

配置完成之后,我们在外网环境中访问http://web1.whqyjy.com和 http://web2.whqyjy.com.就可以访问内网中的web1和web2了。

​​

​​

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95309.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

裸机程序(1)

一、裸机裸机是一个在计算机硬件与软件开发领域高频出现的概念&#xff0c;核心定义是 “未安装操作系统&#xff08;OS&#xff09;&#xff0c;仅包含硬件本身&#xff08;或仅运行最底层硬件驱动 / 控制程序&#xff09;的设备”。在电脑中&#xff0c;裸机会映射代码到cpu&…

95%企业AI失败?揭秘LangGraph+OceanBase融合数据层如何破局!​

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。不知道你们有没有遇到过&#xff0c;在我们一些实际落地的AI项目中&#xff0c;虽然前期“Demo 很惊艳&#xff0c;但上线后却无人问津”。你们有没有想…

树莓集团产教融合:数字学院践行职业教育“实体化运营”要求

在职业教育改革不断深化的背景下&#xff0c;“实体化运营” 成为推动职业教育高质量发展的重要方向。树莓集团积极响应这一要求&#xff0c;以产教融合为核心&#xff0c;打造数字学院&#xff0c;切实践行职业教育 “实体化运营”&#xff0c;为培养高素质数字领域专业人才探…

ELK 统一日志分析系统部署与实践指南(上)

#作者&#xff1a;张桐瑞 文章目录1 ELK 技术栈概述1.1ELK 核心组件详解1.2 ELK 工作流程2 ELK部署2.1 环境描述2.1.7 配置es集群下篇&#xff1a;《ELK 统一日志分析系统部署与实践指南&#xff08;下&#xff09;》 链接: [https://blog.csdn.net/qq_40477248/article/detail…

上位机知识篇---poweshellcmd

要理解 PowerShell 和 CMD 的区别&#xff0c;我们可以先打个通俗的比方&#xff1a;CMD 像老式功能机&#xff0c;只能干打电话、发短信这些 “基础活”&#xff1b;而 PowerShell 像智能手机&#xff0c;不仅能做基础操作&#xff0c;还能装 APP、玩复杂功能&#xff0c;甚至…

利用 Python 绘制环形热力图

暑假伊始&#xff0c;Coldrain 参加了学校举办的数模集训&#xff0c;集训的过程中&#xff0c;遇到了需要展示 59 个特征与 15 个指标之间的相关性的情况&#xff0c;在常用的图表不大合适的情况下&#xff0c;学到了一些厉害的图表&#xff0c;但是似乎千篇一律都是用 R 语言…

【序列晋升】27 Spring Cloud Sleuth给分布式系统装上透视镜

Spring Cloud Sleuth作为微服务架构中的核心监控组件&#xff0c;通过轻量级的无侵入式跟踪机制&#xff0c;解决了分布式系统中请求路径复杂、问题定位困难的痛点。它自动为每个服务请求创建唯一的Trace ID&#xff0c;并为每个服务间调用生成Span ID&#xff0c;形成完整的调…

Linux(2)|入门的开始:Linux基本指令(2)

一、基本指令介绍 回顾上篇博客Linux(1)|入门的开始&#xff1a;Linux基本指令-CSDN博客&#xff0c;我们已经学习了mkdir目录的创建&#xff0c;touch普通文件的创建&#xff0c;光有创建肯定是不行的&#xff0c;接下来就介绍我们的删除指令 1、rmdir指令&&rm指令 …

sv中forever如何结束

在 SystemVerilog 中&#xff0c;forever 循环本身无法自我结束。它的设计初衷就是创建一个永不终止的循环。 因此&#xff0c;要结束一个 forever 循环&#xff0c;必须从外部强制中断它。主要有以下两种方法&#xff1a;1. 使用 disable 语句&#xff08;最常用和推荐的方法&…

关于熵减 - 从法拉第圆盘到SEG

我们清楚的知道法拉第圆盘发电机的原理。当导线切割磁感线的时候&#xff0c;会产生电流&#xff0c;当然电流产生需要的是电动势&#xff0c;也就是&#xff0c;这里写 不写 &#xff0c;避免和电场强度混淆。根据上面的分析&#xff0c;我们知道磁场强度特斯拉 的单位&#x…

【机器学习】实战:市场增长点分析挖掘项目

在电商行业激烈竞争的背景下&#xff0c;精准挖掘市场增长点是企业保持竞争力的关键。本文基于拜耳官方旗舰店驱虫剂市场分析项目&#xff0c;先对原文核心内容进行梳理与解读&#xff0c;再续写关键的竞争分析模块&#xff0c;形成完整的市场增长点挖掘闭环&#xff0c;为企业…

【Day 18】21.合并两个有序链表 2.两数相加

文章目录21.合并两个有序链表题目&#xff1a;思路&#xff1a;迭代代码实现&#xff08;Go&#xff09;&#xff1a;2.两数相加题目&#xff1a;思路&#xff1a;代码实现&#xff08;Go&#xff09;&#xff1a;21.合并两个有序链表 题目&#xff1a; 将两个升序链表合并为…

Vue 3 WebSocket通信方案:从原理到实践

Vue 3 WebSocket通信方案&#xff1a;从原理到实践 在现代Web应用开发中&#xff0c;实时通信已成为许多应用的核心需求。从即时聊天到实时数据更新&#xff0c;用户对应用响应速度的期望越来越高。本文将深入剖析一个Vue 3环境下的WebSocket通信方案&#xff0c;包括基础封装与…

Windows 电源管理和 Shutdown 命令详解

一、Windows 电源管理概述 Windows 操作系统通过其内置的电源管理框架&#xff0c;为用户提供了多种电源状态和配置选项&#xff0c;以在性能、能耗和数据安全之间找到最佳平衡点。以下是 Windows 系统中常见的电源状态及其特点&#xff1a; 1. 睡眠&#xff08;Sleep&#xff…

Selenium WebUI 自动化“避坑”指南——从常用 API 到 10 大高频问题

目录 一、为什么 90% 的 UI 自动化脚本活不过 3 个月&#xff1f; 二、Selenium必会 API 速查 三、实践 四、10 大高频异常“症状 → 病因 → 处方” 五、可复用的工具函数 六、面试高频追问&#xff08;附标准答案&#xff09; 一、为什么 90% 的 UI 自动化脚本活不过 …

【微信小程序】微信小程序基于双token的API请求封装与无感刷新实现方案

文章目录前言一、设计思路二、执行流程三、核心模块3.1 全局配置3.2 request封装3.2.1 request方法配置参数3.2.2 请求预处理3.2.3 核心请求流程3.3 刷新accessToken3.4 辅助方法四、api封装示例总结前言 现代前后端分离的模式中&#xff0c;一般都是采用token的方式实现API的…

基于单片机醉酒驾驶检测系统/酒精检测/防疲劳驾驶设计

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 该设计基于单片机开发&#xff0c;旨在通过实时检测驾驶员酒精浓度&#xff0c;预防酒后驾驶行为…

第6章:垃圾回收分析与调优

1. 垃圾回收基础 1.1 Java 垃圾回收概述 垃圾回收&#xff08;Garbage Collection&#xff0c;GC&#xff09;是 Java 虚拟机自动内存管理的核心机制。理解 GC 的工作原理对于 Java 应用性能调优至关重要。 1.1.1 垃圾回收的目标 自动内存管理&#xff1a;无需手动释放内存防止…

ROS2核心模块-动作通信、参数服务

动作通信 机器人导航到某个目标点,此过程需要一个节点A发布目标信息&#xff0c;然后一个节点B接收到请求并控制移动&#xff0c;最终响应目标达成状态信息。 乍一看&#xff0c;这好像是服务通信实现&#xff0c;因为需求中要A发送目标&#xff0c;B执行并返回结果&#xff0c…

word文档封面中文件编号等标题和内容无法对齐

问题 word文档封面中文件编号等标题和内容无法对齐&#xff0c;因为标题使用的是底纹不是文件内容。 解决办法 字体大小、行距两者配合就可以解决。