title author date CreateTime categories
dotnet core 通过 frp 发布自己的网站
lindexi
2019-04-29 12:26:45 +0800
2019-02-15 09:22:33 +0800
dotnet dotnetcore frp

很多时候写出来的网站只能自己内网访问,本文告诉大家如何通过 Frp 将自己的 asp dotnet core 网站发布到外网,让小伙伴访问自己的网站
通过 frp 的方式,可以解决自己的服务器性能太差的问题,通过 frp 的方式需要先存在一个外网的服务器

本文分为三个部分,第一个是创建一个简单的 asp dotnet core 网站,第二是配置域名,第三是配置代理

要使用本文的方法需要以下三个条件

  • 本地有 asp dotnet core 环境
  • 有自己的外网服务器
  • 有自己的域名

搭建本地网站

通过 asp dotnet core 搭建网站是十分简单的,这里搭建的只是一个简单的 api 服务

通过命令行进入一个文件夹,在这个文件里面创建 asp dotnet core 网站,通过在地址栏输入 cmd 就可以在命令行进入当前的文件夹

在文件夹输入下面代码创建一个 asp dotnet core api 网站

dotnet new webapi -o 网站的项目名

等待一下就可以使用命令行进入创建的网站的项目,我这里的项目是 lindexi 会在文件夹里面创建一个 lindexi 的程序

进入刚才创建的网站

cd 网站的项目名

这时打开里面的 Program.cs 文件,在里面修改一点代码,让 asp dotnet core 绑定本地的端口

在 asp dotnet core 绑定端口的方法是通过 IWebHostBuilder 配置使用的连接

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://0.0.0.0:8000")
.UseStartup<Startup>();

这里绑定了本地的所有的 8000 端口,可以通过本地的网站的内网 ip 本地 127.0.0.1 访问

保存关闭,然后运行下面的代码

dotnet run

如果看到下面的代码就是创建成功

Hosting environment: Development
Content root path: C:\lindexi\dotnet core 通过 frp 发布自己的网站\lindexi
Now listening on: http://0.0.0.0:8000

配置域名

这里域名不需要备案,简单的方法是从 godaddy.com 购买域名

在域名管理添加一个 a 记录

在这里写入 Host 或 Name 输入 server 作为你二级域名,然后在 Value 输入你的服务器地址

这里的 Host 的名字可以随意更改,但是这个值会在下面使用到

这里就让 dns 的 server.lindexi.com 指向我的服务器 ip 通过访问 http://server.lindexi.com 就可以访问服务器

配置代理

打开自己的服务器,从服务器下载 frp 程序

github 下载对应的 Linux 版本的 frp 程序,然后解压

进入 frp 文件夹,可以看到 frps.ini 文件,在这个文件输入下面的代码

[common]
bind_port = 7000
vhost_http_port = 8080

这里的 bind_port 是客户端连接服务器的端口,客户端需要知道服务器的 ip 和端口才能访问到服务器

这里 vhost_http_port 就是服务器发送服务的端口

然后在服务器运行 frps 这里的 frps 的 s 指的是服务器,里面的 frpc 的 c 指的是客户端

在本地的设备,从github下载和服务器版本相同的 frp 程序,注意版本要相同

打开 frpc.ini 文件,在里面写入下面代码

[common]
server_addr = 23.105.201.4
server_port = 7000 [web]
type = http
local_port = 8000
custom_domains = server.lindexi.com

注意,这里的 server_addr 填写的是你的服务器的 ip 这里的 server_port 对应服务器的 bind_port 的值

上面代码 custom_domains 的自定义域名需要先在自己的域名配置好

上面的代码的 local_port 就是通过 127.0.0.1 可以访问到的自己的网站的端口,在本文前面就使用 8000 作为 12.0.0.1:8000 网站

现在尝试在服务器运行一下 frp 服务

./frps -c ./frps.ini

在本地也启动 frp 客户端

./frpc -c ./frpc.ini

因为服务器对外的端口是 8080 也就是 frps.ini 的 vhost_http_port 的设置,需要通过域名:8080访问

我的域名设置是 server.lindexi.com 本地的 asp dotnet core api 的链接是 http://127.0.0.1:8000/api/values 在浏览器就需要通过下面网址访问

server.lindexi.com:8080/api/values

通过 frp 就可以将自己本地的服务通过自己的服务器让外面的小伙伴访问,这样就可以使用本地的几乎无限量的本地磁盘做文件存储,也可以使用本地的性能比服务器厉害很多的设备

frp 文档

2019-4-29-dotnet-core-通过-frp-发布自己的网站的更多相关文章

  1. dotnet core 通过 frp 发布自己的网站

    很多时候写出来的网站只能自己内网访问,本文告诉大家如何通过 Frp 将自己的 asp dotnet core 网站发布到外网,让小伙伴访问自己的网站 通过 frp 的方式,可以解决自己的服务器性能太差 ...

  2. asp dotnet core 从 Frp 获取用户真实 IP 地址

    我在本地开一个服务,然后通过 Frp 让小伙伴可以在外网访问我的 API 连接,但是直接通过 RemoteIp 拿到的是本地的地址.本文告诉小伙伴如何通过 Frp 可以拿到用户的真实 IP 地址 我写 ...

  3. 流程自动化RPA,Power Automate Desktop系列 - DotNet Core打包并发布Nuget Package

    一.背景 DotNet Core通常基于Nuget来实现包管理,如果你想要把自己的实现共享给其他人,通常我们需要把本地项目打包好,然后发布到对应的Nuget Server上,以便于其他人可以查找.安装 ...

  4. dotnet core 跨平台编译发布

    vs2017 建立的项目,在项目目录 ,执行 dotnet publish -r ubuntu.15.04-x64 dotnet publish -r linux-x64 dotnet publish ...

  5. dotnet core瘦身发布

    需要安装nuget包Microsoft.Packaging.Tools.Trimming然后利用如下命令发布dotnet publish -r win10-x64 -c release --self- ...

  6. 手把手教你用Jenkins自动发布dotnet core程序

    Jenkins部分 首先,我们要有个Jenkins咯,下载链接:https://jenkins.io/download/ 我们安装官网教程安装好jenkins,安装教程略.... 嗯?不是说好手把手么 ...

  7. asp dotnet core 通过图片统计 csdn 用户访问

    在 csdn 的访问统计里面,只能用 csdn 提供的访问统计,因为在 csdn 中不支持在博客加上 js 代码,也就是无法使用友盟等工具统计. 通过在 asp dotnet core 创建一个图片链 ...

  8. dotnet core 使用 CoreRT 将程序编译为 Native 程序

    现在微软有一个开源项目 CoreRT 能通过将托管的 .NET Core 编译为单个无依赖的 Native 程序 这个项目现在还没发布,但是能尝试使用,可以带来很多的性能提升 使用 CoreRT 发布 ...

  9. dotnet core 发布只有一个 exe 的方法

    在 dotnet core 发布的时候,会使用很多文件,这样发给小伙伴使用的时候不是很清真,本文告诉大家一个非官方的方法通过 warp 将多个文件打包为一个文件 和之前相同的方式发布一个 dotnet ...

  10. 这可能是最low的发布dotnet core站点到centos7

    前言 不得不说:我在chrome上写了好长一段,贴了23张图,然后一个crash..我想说我电脑上的chrome已经crash太多次了 以后一定要搞离线编辑的. 正文 什么是.net core,bal ...

随机推荐

  1. win10文件名或文件路径过长导致无法删除或复制的解决办法

    试过了百度上的所有方法,命令行中del没有作用,Unlocker也没用,批处理也不起作用,360的强力删除也没有作用. 最后找到一种方法,在压缩该文件的时候选择删除源文件. 但是需要注意一点,用360 ...

  2. Ajax技术 - (Asynchronous JavaScript + XML)

    Ajax Ajax = 异步JavaScript和XML,Ajax是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新.可以再网页不重新加载的情况下, ...

  3. spring-注解配置-junit整合测试-aop

    1 使用注解配置spring 1.1 步骤 导包4+2+spring-aop 1.为主配置文件引入新的命名空间(约束) 2.开启使用注解代理配置文件 3.在类中使用注解完成配置 1.2 将对象注册到容 ...

  4. Effective Modern C++ 条款4:掌握查看型别推导结果的方法

    采用何种工具来查看型别推导结果,取决于你在软件开发过程的哪个阶段需要该信息.主要研究三个可能的阶段:撰写代码阶段.编译阶段.运行时阶段. IDE编译器 IDE中的代码编译器通常会在你将鼠标指针选停止某 ...

  5. Redis源码解析:17Resis主从复制之主节点的部分重同步流程及其他

    本文主要讲解主节点部分重同步的实现,以及主从复制中的其他功能.本文是Redis主从复制机制的最后一篇文章. 主节点在收到从节点发来的PSYNC命令之前,主节点的部分重同步流程,与完全重同步流程是一样的 ...

  6. mongodb 使用常见问题汇总(主要是集群搭建)

    1 安装 请使用官方推荐的教程 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/ 2 远程访问失败: 操作系统是u ...

  7. Django项目:CRM(客户关系管理系统)--28--20PerfectCRM实现King_admin数据修改美化

    {#table_change.html#} {## ————————19PerfectCRM实现King_admin数据修改————————#} {#{% extends "king_mas ...

  8. h5+css3+Jq

    1.侧边栏划出一个信息框 通常鼠标浮动侧边栏都会划出一个信息框,每个信息框距离侧边栏的距离是相等的,所以处理此问题的方法就是 量取信息框距离侧边栏的距离,信息框设置绝对定位,父元素设置相对定位之后,信 ...

  9. python基础--递归、三元表达式、列表(字典)生成式、匿名函数、常用的内置函数

    函数的递归:函数在调用阶段直接或者间接的又调用自身 递归的两个阶段: 1.回溯:就是一次次重复的过程,这个重复的过程必须建立在每一次重复问题的复杂度都是应该下降的,直接有一个最终的结束条件(这个结束条 ...

  10. Linux 基础命令4进程

    ID和PID的产生 ps( process status) 查看现在的进程 上例中,列出了两个进程,进程 5198 和进程 10129,各自代表命令 bash 和 ps.正如我们所看到的, 默认情况下 ...