如何使用思科路由器在多个内部 Web 服务器中发布具有相同端口 80 的多个网站?

如何使用思科路由器在多个内部 Web 服务器中发布具有相同端口 80 的多个网站?

我在具有单个公共 IP 的多台 Web 服务器中发布多网站时遇到问题,并且所有这些网站都使用相同的默认端口 80,但具有不同的 URL 地址。

我想在互联网上使用默认的 Http 端口 80 发布所有这些网站,并且不更改 Cisco 路由器的内部 Web 服务器中的默认端口 http。

可以帮我发布这些网站。

针对此问题我的网络架构:

网络架构


我建议使用以下思科命令来解决此问题:

请告诉我你的看法:


类映射匹配所有 cweb1

       match protocol http url "www.test-A.com"

策略映射 pweb1

      class cweb1

路由图 rweb1 允许 10

      match policy-list pweb1

ip nat 内部源静态 192.168.0.10 280.200.150.10 路由图 rweb1


但是我在这些命令中遇到的问题是,我无法使用这些命令发布超过 1 个网站。

如果对超过 1 个网站思科路由器使用这些命令,则会给出“错误”。

您有解决这些思科命令的解决方案吗?

答案1

您无法将公共 IP 地址上的端口映射到多个私有 IP 地址,这根本行不通,因为路由器如何知道要去哪一个?

如果您使用基于名称的虚拟主机,您可以通过在 Web 实例前面放置一个 HAProxy 实例并将所有流量从路由器引导到 HAProxy 实例来实现此目的。在 HAProxy 实例上,您可以创建一个前端并指定要使用的域和后端。然后,根据通过 HTTP 访问的域,它将请求转发到适当的后端以处理请求。

当我想节省服务器或 IP 资源时,我总是这样做。

                                            /-----> Web Instance 1
Web ------> Router ------> HAProxy Instance ------> Web Instance 2
                                            \-----> Web Instance 3

以下是我刚刚编写的 HAProxy 前端和后端的示例配置。这不是完整的配置文件,因此请使用 /etc/haproxy/haproxy.cfg 作为指南,以获得完整的配置。

frontend MAIN
    bind *:80
    mode http

    acl EXAMPLE1_URL hdr_dom(host) -i www.example1.com
    acl EXAMPLE2_URL hdr_dom(host) -i www.example2.com
    acl EXAMPLE3_URL hdr_dom(host) -i www.example3.com

    use_backend EXAMPLE1 if EXAMPLE1_URL
    use_backend EXAMPLE2 if EXAMPLE2_URL
    use_backend EXAMPLE3 if EXAMPLE3_URL

 backend EXAMPLE1
     mode http
     server web1 192.168.1.1:80

 backend EXAMPLE2
     mode http
     server web2 192.168.1.2:80

 backend EXAMPLE3
     mode http
     server web3 192.168.1.3:80

相关内容