Jeremy Boyd Asked: 2010-01-22 10:19:46 +0800 CST2010-01-22 10:19:46 +0800 CST 2010-01-22 10:19:46 +0800 CST wrt54g 端口地址转换 772 我有一台服务器已经占用了端口 80(一个实时站点),我还有另一台运行 wordpress mu 的服务器,它只能在端口 80 上运行。 我的路由器有没有办法将端口 81 看起来像是端口 80 到 wordpress 安装? http nat pat 5 个回答 Voted Zoredache 2010-01-22T10:31:21+08:002010-01-22T10:31:21+08:00 设置端口转发应该很简单。您使用的是库存固件还是其他类似 ddwrt 的东西?您可能遇到的问题是 wordpressmu 安装可能会输出绝对 URL。如果是这样,它们将不包含正确的端口。 您可以设置一个将端口 80 转发到的 HTTP 代理。然后可以将该代理配置为根据主机名将请求转发到正确的内部主机。如果您现有的网站已经在运行 apache,您甚至可以在那里设置一个额外的虚拟主机并启用代理。 Alex 2010-01-22T10:24:50+08:002010-01-22T10:24:50+08:00 假设请求是通过路由器从外部发出的,您可以将其设置为将外部端口 81 转发到内部服务器上的 IP 和端口 80。 检查防火墙设置并添加端口转发器。 它在设置中: 应用程序和游戏 > 端口范围转发 从手册: 要转发端口,请在每行输入所需条件的信息。 应用程序在此字段中,输入您希望为应用程序提供的名称。每个名称最多可包含 12 个字符。 开始/结束这是端口范围。 在“开始”列中输入 端口范围的开始数字, 在“结束”列中输入结束范围的数字。 协议 选择用于此应用程序的协议,TCP 或 UDP,或两者。 IP 地址对于每个应用程序,输入运行特定 应用程序的 PC 的 IP 地址。 启用选择启用以启用相关应用程序的端口转发。 joeqwerty 2010-01-22T10:46:26+08:002010-01-22T10:46:26+08:00 到目前为止提到的方法的问题在于,解决方案要么比它需要的复杂(代理、多端口转发设置),要么给客户端带来负担(备用端口)。为什么不在端口 80 上运行两个站点并使用主机标头来区分两者?这允许您在防火墙(端口 80)上拥有一个端口转发规则,允许您在内部运行多个唯一的网站,并允许您的网站访问者像连接任何其他网站一样连接,而无需指定端口他们浏览器中的号码。我以这种方式在我的家庭服务器上运行 6 个独特的网站。 除非我误解了您的问题,否则这应该有效。 djangofan 2010-01-22T17:09:30+08:002010-01-22T17:09:30+08:00 我从未尝试过,但这应该可以工作,无需重新启动网络适配器,也无需出于任何原因关闭实时站点: 使用基于 IP 的虚拟主机方法: http ://httpd.apache.org/docs/2.0/vhosts/ip-based.html 要使其工作,请通过在网络属性中添加第二个 IP 将您的网卡绑定到 2 个内部 NAT IP 地址。让 Wordpress 在其中一个 IP 地址上运行,而 livesite 在另一个 IP 地址上运行......都在端口 80 上。然后使用您的主机文件将 livesite.com 发送到一个 IP,将 wordpresssite.com 发送到另一个 IP 地址。此外,从外部世界使域解析为正确的 IP。 Best Answer Jeremy Boyd 2010-01-28T06:54:52+08:002010-01-28T06:54:52+08:00 我能够使用 IIS 中的反向代理来克服这个问题,它的工作方式类似于 mod_proxy,并使用 HOSTS 文件将 / 之后的所有内容转换到内部站点并将域映射到内部 IP。它很乱,但它有效。
设置端口转发应该很简单。您使用的是库存固件还是其他类似 ddwrt 的东西?您可能遇到的问题是 wordpressmu 安装可能会输出绝对 URL。如果是这样,它们将不包含正确的端口。
您可以设置一个将端口 80 转发到的 HTTP 代理。然后可以将该代理配置为根据主机名将请求转发到正确的内部主机。如果您现有的网站已经在运行 apache,您甚至可以在那里设置一个额外的虚拟主机并启用代理。
假设请求是通过路由器从外部发出的,您可以将其设置为将外部端口 81 转发到内部服务器上的 IP 和端口 80。
检查防火墙设置并添加端口转发器。
它在设置中:
应用程序和游戏 > 端口范围转发
从手册:
要转发端口,请在每行输入所需条件的信息。
应用程序在此字段中,输入您希望为应用程序提供的名称。每个名称最多可包含 12 个字符。
开始/结束这是端口范围。 在“开始”列中输入
端口范围的开始数字, 在“结束”列中输入结束范围的数字。
协议 选择用于此应用程序的协议,TCP 或 UDP,或两者。
IP 地址对于每个应用程序,输入运行特定
应用程序的 PC 的 IP 地址。
启用选择启用以启用相关应用程序的端口转发。
到目前为止提到的方法的问题在于,解决方案要么比它需要的复杂(代理、多端口转发设置),要么给客户端带来负担(备用端口)。为什么不在端口 80 上运行两个站点并使用主机标头来区分两者?这允许您在防火墙(端口 80)上拥有一个端口转发规则,允许您在内部运行多个唯一的网站,并允许您的网站访问者像连接任何其他网站一样连接,而无需指定端口他们浏览器中的号码。我以这种方式在我的家庭服务器上运行 6 个独特的网站。
除非我误解了您的问题,否则这应该有效。
我从未尝试过,但这应该可以工作,无需重新启动网络适配器,也无需出于任何原因关闭实时站点:
使用基于 IP 的虚拟主机方法: http ://httpd.apache.org/docs/2.0/vhosts/ip-based.html
要使其工作,请通过在网络属性中添加第二个 IP 将您的网卡绑定到 2 个内部 NAT IP 地址。让 Wordpress 在其中一个 IP 地址上运行,而 livesite 在另一个 IP 地址上运行......都在端口 80 上。然后使用您的主机文件将 livesite.com 发送到一个 IP,将 wordpresssite.com 发送到另一个 IP 地址。此外,从外部世界使域解析为正确的 IP。
我能够使用 IIS 中的反向代理来克服这个问题,它的工作方式类似于 mod_proxy,并使用 HOSTS 文件将 / 之后的所有内容转换到内部站点并将域映射到内部 IP。它很乱,但它有效。