我正在尝试解决客户的问题,但我有一个(糟糕的?)想法......
问题 :
客户端在其广域网路由器后面运行着两个 Web 服务器。(其建筑物内的物理服务器)
每台服务器都托管不同的 Web 服务,合并两台服务器是不可能的。
路由器将端口 80 上的请求转发到服务器 A(这不能改变),并将端口 90 上的请求转发到服务器 B。
([[编辑]]:现在服务器 B 通过客户端的 IP 和端口 90 直接从 Web 浏览器进行查询……这是错误的……)
我需要从 1and1 互助服务器通过 PHP(代理)脚本询问服务器 B。
托管公司(1and1)有一个防火墙,阻止开发人员从 21、22 和 80 以外的其他端口发送请求。
想法:
更改我的客户端路由器的端口转发规则,以便可以通过端口 22 访问服务器 B,并通过端口 22 上的 php 发送请求。
问题:
使用端口 22 进行 http 请求是不是一个糟糕的做法?
首先,有没有一种简单的方法可以通过向(任何)服务器的端口 22 发送 http 请求来测试我的 PHP 代理脚本?
答案1
正式来说,端口 22 是为安全 shell 访问 (ssh/sftp) 保留的。遵循 IANA 制定的标准是一种很好的做法,但只要您不需要这些服务,针对 22 运行 HTTP 端口转发就不会有问题。它会起作用(我以前因为类似的原因这样做过)。
“互联网号码分配机构 (IANA) 负责维护特定用途的端口号的官方分配。然而,在实践中,许多众所周知和注册的端口号都被非官方使用。” - http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
不过 SvW 是对的,LAN 上的反向代理是一个很好的解决方案,并且可以避免将来的麻烦。
[编辑]
有关设置反向代理的更多信息,请参见此处: http://www.integratedwebsystems.com/2010/06/multiple-web-servers-over-a-single-ip-using-apache-as-a-reverse-proxy/
这也是 Stack Overflow 上有关正向和反向代理服务器的一篇非常好的文章,最后列出了相关资源: https://stackoverflow.com/questions/224664/difference-between-proxy-server-and-reverse-proxy-server
答案2
更换托管服务提供商(或托管计划)。如果您确实需要访问其他端口,托管公司不应该限制您。
在您的 LAN 内部设置一个反向代理,将请求映射到相应的服务器。
答案3
您还可以使用主机头识别为其中一个(或两个)站点创建重定向页面。这样,所有端口 80 流量都会转到一个框并从那里重新路由。类似于反向代理,但可能更容易设置(特别是如果您使用 IIS)。