谷粒商城P139集——云服务器frp内网穿透+nginx完美解决方案

news2024/11/17 1:37:14

1、修改本地HOST

C:\Windows\System32\drivers\etc 目录下 host文件

在这里插入图片描述

上面前面是自己的云服务器ip

测试:如域名为gulimall.com 备注如果自己的云服务器nginx端口不是80 访问的时候记得打开

可以访问9200或者nacos尝试

则在浏览器中输入gulimall.com:9200(前提是9200端口已经开放)

img

2、frp服务端设置(云服务器)

(1)下载
wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz

云服务器下载linux版本注意frps的配置即可,本地下载windows版本注意frpc的配置即可

(2)解压

tar -zxvf frp_0.20.0_linux_amd64.tar.gz

(3)修改frps.ini(frp server 服务端)

bind_port = 7001

dashboard_port = 7500

token = 12345678

dashboard_user = admin

dashboard_pwd = admin

vhost_http_port = 88
  1. “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
  2. “dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 云服务器ip:7500 查看frp服务运行信息。
  3. “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
  4. “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
  5. “vhost_http_port":注意我们通过云服务器ip : vhost_http_port去访问本地主机被穿透的端口

(4)测试运行frpc服务端

命令:

./frps -c frps.ini

成功:

img

此时访问 云服务器ip : 7500 并使用自己设置的用户名密码登录,即可看到仪表板界面

img

(5)设置frpc后台运行

nohup ./frps -c frps.ini &

成功:

img

此时可先使用Ctrl+C关闭nohup,frps依然会在后台运行,使用jobs命令查看后台运行的程序

img

3、frp客户端设置(本地主机)

(1)修改frpc.ini

[common]

server_addr = xxxxx #公网ip地址

server_port = 7001 #与服务端bind_port对应的端口号

token = 123456

[http]

type = http

local_ip = 127.0.0.1 #本机地址

#【本机想要暴露的地址】

#对于谷粒商城来说,我们要把这个设置为网关的端口号

local_port = 88 
custom_domains = xxxxx #公网ip地址

(2)运行测试 记得每次想做内网穿透服务就需要打开这个服务由于我公司内网不允许穿透我这里不推荐开机自启动

frpc.exe -c frpc.ini

img

4、nginx设置

方案1

我是直接修改conf.d文件夹下default.conf文件 由于时间关系 这里我先使用的default文件夹 等周末就改成单独配置

nginx:  

server {
    listen       80;
    listen  [::]:80;
    server_name  gulimall.com:90;


    location /static/ {
        root /usr/share/nginx/html;
    }
    location / {
    #这里记得 如果你没购买域名有两种解决办法  代理服务器写成ip可以访问 但是gateway网关的匹配规则则需要根据改变
        proxy_pass http://xxxxx:88;
        #proxy_set_header Host gulimall.com;
        #这里我把主机的host设置成了ip+服务端口号
        proxy_set_header Host xxxx:10000;
    }
    
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

最后访问域名可直接拿到商城主页

原理是 我们本地配置了gulimall.com:nginxport

他会通过dns解析转换为ip访问 我们的云服务器nginx 云服务器的nginx又会把我们的请求转移到服务器的88端口

由于我们的服务88端口是开通了内网穿透代理到我们自己的电脑本机88端口 所以就实现了请求的全部流程并且我们设置了

#这里我把主机的host设置成了ip+服务端口号
proxy_set_header Host xxxx:10000;

只需要把gateway的断言改成 xxxx:10000即可 后面做到搜索服务直接改成ip+搜索服务的端口即可

gateway配置
在这里插入图片描述

方案2

方案2我自己觉得麻烦没有实现 但是我想的应该正确

nginx:

server {
listen 80;
listen [::]:80;
server_name gulimall.com:90;

location /static/ {
    root /usr/share/nginx/html;
}
location / {
#这里记得 如果你没购买域名有两种解决办法  代理服务器写成ip可以访问 但是gateway网关的匹配规则则需要根据改变
    proxy_pass http://xxxxx:88;
    #这里我把主机的host设置成了域名
    proxy_set_header Host gulimall.com;#这里应该写自己的云服务器ip对应的域名我这里只是介绍
}

error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}

}

dns解析不过是域名和ip的映射 但是如果单纯这样操作还是不行 除非你已经注册了域名 为gulimall。com对应自己的云服务器 ip的要不然frp服务直接找不到服务

但是我有一个想法 可以让大家不用注册域名也行 我查询了dns的解析流程 无非就是关系映射 ip和域名的映射

dns解析 先查询本主机如果有符合就去使用 查不到就去发请求给本局域网dns索要映射 一直往上两种查询我说的是递归查询的不废话dns的查询自己去了解 我相信大家也关注到了 dns先去查询本机 我们只需要把本机的

dns映射做好即可 就像windows一样 当然我没有实操 这里需要勤奋的网友去尝试

重要:引用参考文章https://blog.csdn.net/weixin_57139527/article/details/126789451

5、总结

  1. 输入域名,域名解析为云服务器ip地址
  2. nginx监听到server_name为域名的请求,将其转发给http://云服务器ip:88;
  3. frps(云服务器上的服务端)监听到88端口(对应于frps.ini里的vhost_http_port),frps通过绑定的端口号(bind_port)与本地主机连接。
  4. 作为frpc的本地主机通过(server_port)和(server_addr)与有frps的云服务器连接,它将会把来自于云服务器的请求转发给(local_ip : local_port)并且为之设置host字段(host_header_rewrite = gulimall.com
  5. 最终后端项目收到了如http://localhost:88的请求,网关对host字段进行断言,成功后负载均衡给gulimall-product服务,最终响应商城主页。

6、其他参考文章

1、FRP内网穿透–实现公网ip远程访问内网8080端口_尬维的博客-CSDN博客_frp 端口

2、使用frp进行内网穿透 - 少数派

4、windows守护进程工具–nssm详解 - 与f - 博客园

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

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

相关文章

科技顶天,市场立地 。璞华科技“顶天立地”的成长之路

科技顶天,市场立地。 几十年来,我们越来越深刻地认识到,这就是真理,质朴而深刻。尤其在当前特殊的国际国内商业环境中,这一理念不但没有过时,反而恰逢其时。有这么一家企业,一直践行“科技顶天…

【算法Hot100系列】外观数列

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

SpringIOC之support模块GenericXmlApplicationContext

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

C#核心--实践小项目(贪吃蛇)

C#核心实践小项目 -- 贪吃蛇 必备知识点--多脚本文件 (可观看CSharp核心--52集进行了解) 必备知识点--UML类图 必备知识点--七大原则 贪吃蛇 项目展示 控制方向的是:WSAD 确定键是:J 需求分析(UML类图&#xff09…

Python中if语句的基本格式

在 Python 中,if 语句用于根据条件执行不同的代码块。它的基本格式如下: if condition:# 如果 condition 为 True,执行这里的代码块其中,condition 是一个表达式,通常涉及变量和操作符,用于判断结果是 Tru…

Jenkins基础篇--添加节点

节点介绍 Jenkins 拥有分布式构建(在 Jenkins 的配置中叫做节点),分布式构建能够让同一套代码在不同的环境(如:Windows 和 Linux 系统)中编译、测试等。 Jenkins 运行的主机在逻辑上是 master 节点,下图是主节点和从节点的关系。 添加节点 …

C++ 深度优先搜索DFS || 模版题:排列数字

给定一个整数 n ,将数字 1∼n 排成一排,将会有很多种排列方法。 现在,请你按照字典序将所有的排列方法输出。 输入格式 共一行,包含一个整数 n 。 输出格式 按字典序输出所有排列方案,每个方案占一行。 数据范围 1…

压测工具ab

Apache Benchmark(简称ab) 是Apache安装包中自带的压力测试工具 ,简单易用, Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以适用于其他服务:nginx、lighthttp、tomcat、IIS等其它Web服务器的压力 采用平台&#xf…

List集合知识总结

文章目录 ListArrayList常用方法遍历方法for循环for-each循环迭代器forEach Lambda表达式 List转化为Array循环遍历集合调用toArray无参方法。调用toArray(T[] a)有参方法 LinkedList同ArrayList的区别常用方法 List List是一种常用的集合类型,它可以存储任意类型…

Vue3 中使用 Vuex 和 Pinia 对比之 Vuex的用法

本文基于 Vue3 的 composition API 来展开 Vuex 和 Pinia 的用法比较 Pinia传送门 Vuex传送门 Vuex 状态管理的核心概念 状态- 驱动应用的数据源;视图 - 以声明方式将状态映射到视图;操作 - 响应在视图上的用户输入导致的状态变化 下面是源自Vuex 官…

【C++进阶06】红黑树图文详解及C++模拟实现红黑树

一、红黑树的概念及性质 1.1 红黑树的概念 AVL树用平衡因子让树达到高度平衡 红黑树可以认为是AVL树的改良 通过给每个节点标记颜色让树接近平衡 以减少树在插入节点的旋转 在每个结点新增一个存储位表示结点颜色 可以是Red或Black 通过对任何一条从根到叶子的路径上 各个结点…

P114 增强学习 RL ---没懂,以后再补充

sample: 如 70% 的概率向左 20%的概率向右 10% 的概率开火 不是left 分数最高,就直接向左。而是随机sample total reward (return) R 就是优化的目标,分数越高约好 -total reward= loss Policy Gradient 当环境是s 时

搭建算法日志自检小系统

&#x1f952; 前言 目前演示的是一个工具&#xff0c;但如此&#xff0c;未来完成有潜力可以演变为一整套系统。 &#x1f451;现场人员自检失败表计点位教程V2.0 NOTE: 如果没有“logfiles-meter-tool“目录的请联系我们进行提供&#xff01; &#x1f447; 进入<dist>…

ant-design-vue 1.x 的 a-form-model怎样设置表单必填项(a-form同样适用)

背景 "ant-design-vue": "1.7.6" vue2 吐槽 不知道公司为什么非要用蚂蚁金服1.x版本的组件&#xff0c;还是新项目&#xff0c;问题很多bug不少本文记录第一个必填项bug 问题 项目内a-form-model表单某几个属性需要增加必填项 试了以前element-ui的…

2024年湖北建筑安全员C证新政策,6个月锁定单位!如何破解?

2024年湖北建筑安全员C证新政策&#xff0c;6个月锁定单位&#xff01;如何破解&#xff1f; 2024年在湖北考一个建筑安全员C证过久才可以调出&#xff0c;湖北三类人员新取证满6个月之后才能调转。湖北省建筑安管人员考核管理系统&#xff08;也是就是三类报考调转系统&#…

58.leetcode 最后一个单词的长度

一、题目 二、解答 1. 思路 分2种情况 第一种情况只有一个单词&#xff0c;不包含空格&#xff1a;这种情况直接返回单词本身的长度。第二种情况包含空格&#xff1a;先去掉首尾的空格&#xff0c;根据空格切割字符串生成一个字符串列表&#xff0c;返回倒数第一个索引位置字…

LVS 负载均衡群集

本章展示&#xff1a; 了解群集的结构与工作模式 了解 LVS 负载均衡群集原理 学会配置 NFS 共享服务 学会构建 LVS-NAT 负载均衡群集 1.1 LVS 群集应用基础 群集的称呼来自于英文单词“Cluster”&#xff0c;表示一群、一串的意思&#xff0c;用在服务器领域则表 示大量服务…

龙芯3A5000上使用腾讯会议

原文链接&#xff1a;龙芯3A5000上使用腾讯会议 hello&#xff0c;大家好啊&#xff01;今天我要给大家介绍的是在龙芯3A5000处理器上安装使用腾讯会议的经验分享。随着远程工作和在线会议的普及&#xff0c;腾讯会议成为了许多人日常工作不可或缺的工具。而对于使用龙芯3A5000…

嵌入式-Stm32-江科大基于标准库通过GPIO点LED灯

文章目录 一&#xff1a;新建基于库函数开发的工程二&#xff1a;截图操作实现三&#xff1a;main.c 大致代码实现道友&#xff1a;凡事只想着蒙混过关&#xff0c;困难只会越来越多。我们要有&#xff0c;独立解决问题的能力&#xff0c;才能成长为更好的自己。 基于库函数开发…

Java的helloworld、IDEA一些快捷键、导入模块

一、Java的helloworld IDEA管理Java程序的结构 1.project&#xff08;项目、工程&#xff09; 2.moudule&#xff08;模块&#xff09; 3.package&#xff08;包&#xff09; 4.class&#xff08;类&#xff09; 上级包含多个下级&#xff0c;开发程序也是创建工程再创建…