当前位置:首页 > nginx > 正文

如何通过nginx访问内网

  • nginx
  • 2024-05-04 03:16:34
  • 3309
本文目录一览

∪^∪Nginx能不能实现外网服务器访问内网服务器
由于内网计算机没有公网IP,外网计算机无法直接向内网计算机发起连接。
为了实现我们的目标,我们必须主动发起内网计算机到公网服务器的连接。 外网计算机通过此服务器使用此连接,然后通过内网计算机访问。
o(╯□╰)onginx只用一个公网端口转发多个内网服务

​生产环境中常见的问题是,对于有公网IP的服务器,出于安全考虑,运维时只开放一个端口,所以我考虑使用nginx基于前缀路由转发到其他服务。 的网址。 示例:

以springboot项目为例,我们自己的web服务通常会通过配置为服务中的所有URL设置统一的前缀路径/xxxxxx

。 此时,nginx就可以将所有带有/xxxxxx前缀的请求转发给服务了。 这是一件很简单的事情。
​问题是有很多第三方服务,比如kafkamanager,没有这个前缀。 192.168.0.182假设你的系统上安装了kafka,kafkamanager的访问地址是https://。 当然,如果你在第一次访问时传递地址https://192.168.0.182:3000/kafka,nginx会识别出这是一个基于/kafka的kafkamanager服务,并可能将其转发到https://。 /192.168.0.182:3000,但我从kafkamanager页面打开了链接。 上面的方法不起作用,因为我们没有自己添加的/kafka前缀。

我们都知道http服务是无状态的。 如上所述,即使访问kafkamanager首页,点击首页按钮发起的请求也无法被识别为kafkamanager请求。 然而,大多数Web服务都需要有状态存储。 解决这个问题主要有两种方法:session/cookies和tokens。 也可以用来解决上述问题。
nginx配置:

​目前,所有服务在浏览器视图中都属于同一个域,使用相同的IP:端口。 这些cookie将同一个cookie。 此时nginx无法根据其他cookie转发给其他服务。
我们考虑为每个服务配置一个域名,以创建跨域效果,并允许不同的服务拥有独立的cookie(可用的公共域名不多,所以我们将它们配置在本地hosts文件中)。 。
​一直都是为了解决跨域问题,没想到有一天我会带头解决跨域问题。

​配置域名可以让nginx进行识别。 我们为什么要使用cookies?如果您配置了公共域名,但您正在更改主机文件,则实际上可以这样做。 如果您的域名不一致,可能是因为域名记录错误或者本地名称被修改。 如果使用hosts文件,则不需要统一域名。 在这种情况下,基于域名的转发将不起作用。

访问kafkamanager不需要身份验证。 将其暴露在公共网络上并且每个人都可以看到是一件可怕的事情。 我设置了VPN并访问白名单。


(°ο°)如何通过nginx本地电脑搭建外部可以访问的网站
守护神安装nginxmaster,设置位置,绑定域名
然后将域名设置为本地IP,端口80并在运行中计算本地表
但是运营商通常会屏蔽80,您可以更改端口。