我有一台服务器example.com
,我还有另一台服务器example.com:10001
。
当用户试图达到example.com:10001
他们最终的结果example.com:10001/index.php/login
,这就是它应该的样子。
是否有重写规则来隐藏10001
端口,使其看起来像example.com/index.php/login
?
我有一台服务器example.com
,我还有另一台服务器example.com:10001
。
当用户试图达到example.com:10001
他们最终的结果example.com:10001/index.php/login
,这就是它应该的样子。
是否有重写规则来隐藏10001
端口,使其看起来像example.com/index.php/login
?
最简洁的答案是不。浏览器是对用户隐藏端口的原因;当您使用 http 时,它会自动假定端口 80,而当您使用 https 时,它会假定端口 443,对用户隐藏这些端口。使用任何非标准端口,大多数浏览器都会将该端口显示为地址的一部分。
但是,如果我正确理解您的问题,有几种方法可以在同一个 IP 上托管多个站点。您可以使用子域 (myothersite.example.com),而不是使用不同的端口,或者您可以使用 example.com 下的路径,例如 example.com/mysite2。
如果我理解您的问题,您可以使用 mod_rewrite 的 [P] 标志来完成此操作:
还有其他注意事项,您可能应该直接使用 mod_proxy。
此评论中的详细信息表明它
example.com A
指向公共 IP,并且服务器位于 NAT 后面,端口转发到两台服务器:你可以有
您的反向代理,将
172.31.1.10:80
查询代理到172.31.1.11:10001
. 由于服务器是 Apache 2.4,正确的文档是:Apache Module mod_proxy。example.com:80
一个新的代理服务器通过反向代理监听外部172.31.1.10:80
和172.31.1.11:10001
(或任何其他服务器的内部端口)。Nginx 将是一个有效的替代方案。文档:NGINX 反向代理。在这两种情况下,反向代理都需要配置为子文件夹或子域。