草庐IT

frp内网穿透web服务配置

留围冰 2023-05-25 原文

frp是使用较多的免费开源的内网穿透软件,源代码托管在GitHub

1. 下载安装

安装步骤可参考官方文档 https://gofrp.org/docs/setup/
点击项目的release地址进入下载页面:https://github.com/fatedier/frp/releases
首先要根据自己需要安装的机器系统架构下载相应的二进制安装包。
frp的服务端和客户端程序都在同一个安装包中,服务端软件必须安装在有公网IP的机器,客户端软件安装在需要穿透的机器。我的公网服务器是阿里云ECS,其系统架构为 Linux x86_64,frp最新版本为0.44.0,则可下载 frp_0.44.0_linux_amd64.tar.gz;客户端软件准备安装在本地Windows 64位电脑上,则需要下载 frp_0.44.0_windows_amd64.zip。

1.1 服务端安装

Linux服务器上下载时可通过wget程序下载:

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

下载过程可能较慢,喝杯茶耐心等待。下载完成后将其放到你的安装目录,比如我准备安装在/usr/local目录,然后解压并重命名为frp目录,则其安装目录为/usr/local/frp

1.2 客户端安装

Windows电脑上直接点击相应链接下载后解压到安装文件夹即可,比如我的是D:\Program Files (x86)\frp_0.44.0_windows_amd64

2. 配置启动

frp支持 TCP、UDP、HTTP、HTTPS 等多种协议的穿透,这里只介绍HTTP协议。
我在本地Windows电脑上启动了一个简单的web服务,其HTTP端口为8080,本地可通过localhost:8080访问:

现假设需要提供给外网访问,则可借助frp的HTTP协议穿透实现。

2.1 HTTP协议服务端配置

服务端配置文件为frps.ini,初始配置为bind_port = 7000,HTTP协议穿透只需要再增加一个vhost_http_port配置,这个端口号可随意配置服务器的闲置端口,这里使用8000

[common]
bind_port = 7000
vhost_http_port = 8000

配置完成后在frp安装目录运行frps程序并通过-c指定配置文件frps.ini启动服务端:

./frps -c frps.ini &

运行后如果成功出现如下提示:

建议:为了让程序在后台运行并将日志输出到指定文件比如frps.log,可以用nohup启动:

nohup ./frps -c frps.ini >> frps.log 2>&1 &

2.2 HTTP协议客户端配置

客户端即本地window端配置,配置文件为frpc.ini
客户端首先需要在[common]中配置服务端的地址server_addr (这里隐藏了我的真实IP)和 端口号server_port(与服务端 bind_port 配置相同)。
其次,在[web]中配置本地需要穿透的web服务的端口号,这里是8080,即local_port = 8080;此外,还需配置外网访问的域名custom_domains,这里一般是解析到服务端服务器公网IP的域名,但由于没有域名,这里直接配置成服务端公网IP,访问时直接通过IP访问。

[common]
server_addr = 101.200.XX.XX
server_port = 7000

[web]
type = http
local_port = 8080
custom_domains = 101.200.XX.XX

在本地Windows找到安装目录,在上面的输入框中输入cmd,进入安装目录的命令行

运行客户端程序frpc.exe并通过-c指定配置文件frpc.ini启动客户端:

frpc.exe -c frpc.ini

如果启动成功,则出现如下提示:

3. 公网访问测试

现在可以在公网通过公网IP和server_port访问该web服务了(101.200.XX.XX:8000):

和本地访问结果一样,说明内网穿透成功,实现外网访问内网服务的目的。

温馨提示:如果你的服务器端也用的是云服务器ECS,可能需要在网络安全组中放开你配置的端口才可以,否则客户端访问不了服务端,则穿透不成功。

有关frp内网穿透web服务配置的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  4. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  5. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  6. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  7. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  8. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  9. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  10. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

随机推荐