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

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网关的匹配规则则需要根据改变
    	#这里为了方便大家看懂我的所有xxx代表的都是云服务器地址以及我打码地方的都是云服务器ip地址
        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 - 博客园

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决“Ubuntu系统与windows系统之间不能执行复制粘贴”之问题

在win11中,发现“Ubuntu系统与windows系统之间不能互相复制粘贴”,只能通过“FPT客户端FileZilla”才能交换文件,但遇到字符串,就没法实现了,因此,在两个系统之间实现互相复制和粘贴字符串,就很…

x86是什么?

x86是一系列CPU架构的统称,这一术语起源于1978年,当时Intel发布了其首款16位微处理器——8086。这款处理器在当时引起了极大的关注,因为它首次引入了许多先进的技术,如寄存器间接寻址和分段内存管理等。随后,Intel又相…

【InternLM 大模型实战】第四课

XTuner 大模型单卡低成本微调实战 FINETUNE简介指令跟随微调增量预训练微调LoRA & QLoRA XTuner简介功能亮点适配多种生态适配多种硬件 8GB 显卡玩转LLMFlash AttentionDeepSpeed ZeRO 动手实战环节环境配置微调准备配置文件模型下载数据集下载修改配置文件开始微调将得到的…

中间人攻击如何进行防护

中间人攻击(Man-in-the-Middle Attack,简称 MITM 攻击)是一种常见的网络攻击方式,攻击者通过截获两个通信实体之间的通信数据,并在此基础上进行篡改、窃取或伪造等恶意行为。这种攻击方式因其攻击手段的隐蔽性和难以防…

LeetCode讲解篇之47. 全排列 II

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个nums中元素是否被访问的数组used、记录还需要递归的深度deep,遍历nums,如果当前元素被访问过或者当前元素等于前一个元素且前一个元素没被访问过就跳过该次遍历,否则选择当前…

基于SSM+vue的篮球场预约管理系统(Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

mac上部署单体hbase

1. 简介 HBase 是一个开源的、分布式的、版本化的典型非关系型数据库。它是 Google BigTable 的开源实现,并且是 Apache 基金会的 Hadoop 项目的一部分1。HBase 在 Hadoop Distributed File System (HDFS) 上运行,作为一个列式存储非关系数据库管理系统…

JFinal综合信息管理系统

项目地址:mendianyu/AdvancedManagement: 综合信息管理系统 (github.com) 项目演示地址:软件构造大作业演示视频_哔哩哔哩_bilibili 项目功能 一:基于Jfinal构建信息管理系统,要求包含用户管理,翻译业务模块管理&…

redis复习总结

我的redis 1. redis集群 主从集群【哨兵集群】:主从集群是指中,存在一个master节点和多个slave节点。master节点负责接收客户端的读写,slave节点负责读操作。主节点一旦接收到数据的变更,就会将数据同步至slave节点。 但这样的…

集合(二)Collection集合Set

一、Set介绍: 是一个散列的集合,数据会按照散列值存储的,如两个hello的散列值相同,会存储在同一个地址中,所以看到的就是只有一个hello在集合中了。 1、Set集合有两个主要的实现子类:Hashset和Treeset。ha…

ZooKeeper 实战(四) Curator Watch事件监听

文章目录 ZooKeeper 实战(四) Curator Watch事件监听0.前言1.Watch 事件监听概念2.NodeCache2.1.全参构造器参数2.2.代码DEMO2.3.日志输出 3.PathChildrenCache3.1.全参构造器参数3.2.子节点监听时间类型3.2.代码DEMO 4.TreeCache4.1.构造器参数4.2.代码DEMO4.3.日志输出 ZooKe…

代码随想录算法训练营第四天 |链表总结

1、每次先加判断: if (head null) {return head;} 2、ListNode dummy new ListNode(-1, head);和ListNode dummy new ListNode(-1);区别: 在Java中,ListNode dummy new ListNode(-1, head); 和 ListNode dummy new ListNode(-1); 的主…

软考学习笔记--操作系统-进程管理

进程管理是一个具有独立功能的程序关于数据集合的一次可以并发执行的运行活动,是系统进行资源分配和调度的基本单位。相对于程序,进程是动态的概念,而程序是静态的概念,是指令的集合。进程具有动态性和并发性,需要一定…

LeetCode讲解篇之39. 组合总和

文章目录 题目描述题解思路题解代码 题目描述 题解思路 首先排序数组,然后开始选择数字,当选择数字num后,在去选择大于等于num的合法数字,计算过程中的数字和,直到选数字和等于target, 加入结果集,若数字和…

爬虫案例—表情党图片data-src抓取

爬虫案例—表情党图片data-src抓取 表情党网址:https://qq.yh31.com 抓取心情板块的图片data-src 由于此页面采用的是懒加载技术,为了节省网络带宽和减轻服务器压力。不浏览的图片,页面不加载,统一显示LOADING…。如下图&#x…

tkinter控件中文显示为unicode编码的解决办法

一、背景 最近使用python tkinter编写界面应用时,发现按钮的中文名称在windows上显示正常,但是在linux上显示为中文的unicode编码;文本输入框也是,输入中文输时,text控件上也显示为unicode编码,如下图所示…

【Python数据可视化】matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值

文章传送门 Python 数据可视化matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

02-Dapper

1.2:Dapper 1.2.1:设计要求 1、无处不在的部署: 任何服务都应该被监控到,任何服务出问题都要做到有据可查。2、持续的监控:做到7*24小时全天候监控,任何时候出了问题都要基于监控数据追踪问题根源。1.2.2…

基于SSM+JSP的订餐管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

WordPress企业模板

首页大图wordpress外贸企业模板 橙色的wordpress企业模板 演示 https://www.zhanyes.com/waimao/6250.html