我有一个域、静态 IP 地址和许多我想在我家外访问的设备。我如何路由它们?

Lar*_*rry 34 networking router dns routing home-networking

我有一个域(例如example.com)、静态 IP 地址(例如212.5.5.5)和本地设备,位于192.168.0.1:80, 192.168.0.2:80, 192.168.0.3:80, 192.168.0.4:80, 192.168.0.4:47(这不是网站)。

如何访问使用子域名,这些设备(例如device1.example.comdevice2.example.com等)?

目前我只能得到example.com:80example.com:47工作,它指向192.168.0.4:80192.168.0.4:47

我知道您无法在 DNS 服务器上设置端口。

我应该如何克服我的问题?

Dan*_*iel 69

您可以让一台面向公众的服务器运行 nginx 反向代理,根据子域将流量重定向到正确的服务器。

“主”服务器上的 nginx 配置:

server {
  server_name device1.example.com;
  location / {
    proxy_pass http://192.168.0.1:80;
  }
}
server {
  server_name device2.example.com;
  location / {
    proxy_pass http://192.168.0.2:80;
  }
}
server {
  server_name device3.example.com;
  location / {
    proxy_pass http://192.168.0.3:80;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 当您使用它时,您也可以将 https / 端口 443 用于面向外的一端 (26认同)
  • +1 任何反向代理也是如此。我最喜欢的是 HAProxy,因为它很容易为多个子域设置。 (6认同)
  • 这个帖子绝对正确!尽管我建议运行一个名为“NginxProxyManager”的 docker https://github.com/jc21/nginx-proxy-manager,它提供了简单的(letsencrypt)ssl 和路由配置! (4认同)

Cha*_*rge 6

除了其中一个之外,您需要为所有其他端口使用备用端口。例如,212.5.5.5:80 会转发到 192.168.0.1:80,但是 212.5.5.5:81 会转发到 192.168.0.2:80,而 212.5.5.5:82 会转发到 192.168,3,以此类推。在。这应该可以在大多数现代 NAT 设备上进行配置。

另一种方法,如果您愿意使用 IPv6,只需在您的 NAT 设备或路由器上打开 IPv6 直通。这基本上将 LAN 上的每个 IPv6 地址暴露给公共互联网,让您可以直接从外部访问它们。正如您可能想象的那样,这存在一些风险。由您决定该风险是否可以承受。