首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >代理/路由请求到不同的本地/有线IP地址的子域?

代理/路由请求到不同的本地/有线IP地址的子域?
EN

Server Fault用户
提问于 2021-10-13 23:39:30
回答 1查看 793关注 0票数 1

我们有一个具有公共IPv4地址的虚拟机,我们的example.com*.example.com域指向该虚拟机。

我们有几台分布式低技术计算机,与可公开访问的虚拟机建立有线连接/隧道。

我们希望虚拟机能够在端口80/443上服务网站,通过端口22接受ssh连接,等等。

我们希望通过low-tech-01.example.comlow-tech-02.example.com等相应的子域和代理/路由请求向各自的本地/有线IP地址公开访问低技术计算机。这应该适用于通过端口80/443、ssh连接通过端口22等的网站。

编辑:理想的是,SSL证书应该从低技术的计算机上提供,并且SSL连接不应该终止在虚拟机上。

编辑:理想情况下,用于建立与低技术计算机连接的ssh私钥不应该存在于虚拟机上,而只存在于客户端上。

编辑:对于ssh,我们可以为每台低技术计算机打开并路由一个唯一的端口,从public_IPv4:22xxxlocal/wireguard_IP:22

不幸的是,在对nginx配置进行了两天的尝试和错误之后,我们发现这个任务可能无法由nginx单独解决。

注意: ssh不发送SNI;nginx不能监听httpstream连接的相同端口;可能还有更多的问题。

但同时,我们完全没有想法,无法用哪种方法来正确地解决这个问题。

(www\.)?example.com ->公共IPv4 ->网站,ssh等。

low-tech-01.example.com -> public IPv4 -> ??~> 10.0.0.101 ->网站,ssh等。

low-tech-02.example.com -> public IPv4 -> ??~> 10.0.0.102 ->网站,ssh等。

谢谢你的建议和时间。

-

编辑:下面的nginx stream配置接近我们想要实现的目标。(也许)唯一的缺点是,我们必须手动为每台低技术计算机定义一个端口,而不是像SSL连接那样动态地处理这个端口。

代码语言:javascript
运行
复制
stream {
  map $ssl_preread_server_name $name {
    example.com example.com;
    www.example.com example.com;
    low-tech-01.example.com low-tech-01.example.com;
    low-tech-02.example.com low-tech-02.example.com;
  }

  upstream example.com {
    server 127.0.0.1:8443;
  }

  upstream low-tech-01.example.com {
    server 10.0.0.101:443;
  }

  upstream low-tech-02.example.com {
    server 10.0.0.102:443;
  }

  server {
    listen 443;
    proxy_pass $name;
    ssl_preread on;
  }

  server {
    listen 22101;
    proxy_pass 10.0.0.101:22;
  }

  server {
    listen 22102;
    proxy_pass 10.0.0.102:22;
  }

  …
}
EN

回答 1

Server Fault用户

发布于 2021-10-14 06:34:49

您需要在服务器上获得多个IP地址,每个要使用的子域都有一个IP地址。

然后,您需要为每个VM分配一个公共IP地址。之后,您可以将子域绑定到IP地址。在VM中,可以将端口转发到您想要的最终目的地。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1080481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档