仅将单个端口8080转发到本地主机(Windows),是否可行?

5
我知道如何在Windows上使用xampp设置本地Web服务器...我在hosts文件(c:\windows\system32\drivers\etc\hosts)中输入我的别名和目标,然后在我的apache vhosts配置文件中添加相应的条目。这样,假设我的Web服务器正在侦听端口80,我可以将example.com映射到我的本地Web服务器。
我一直在hosts文件中输入整个域名(例如example.com),任何对该名称的请求都将被定向到localhost。
现在我想知道是否有一种方法可以仅在特定端口上转发example.com(例如仅example.com:8080)到本地Web服务器,并保留example.com(在默认端口80上),以便它仍然可以访问我的生产网站。
据我所知,仅使用hosts文件可能无法实现这一点(我尝试将端口:8080添加到我的域名中-似乎不起作用;-)...)
我真的不太了解这个话题,因此欢迎任何想法、见解、链接、阅读材料、工具。
编辑: Arnout的回复回答了我上面提出的问题,但并没有解决我的实际问题。重新路由example.com:8080到localhost:80确实有效,如果我访问example.com,它会加载我的本地版本的首页,但是该页面上的所有链接当然不知道端口号,因此指向生产版本...解决我的问题的实际方法似乎是咬一口酸苹果,并修复我的应用程序(遵循Rob的建议)并删除所有硬编码的URL,以便它在任何域上都可以正常工作...
3个回答

4
Internet Junkbuster(代理服务器)可以使用其转发功能来实现此操作。只需添加类似以下的一行内容: forwarding
example.com:8080   localhost:80   .   .

打开sforward.ini文件,并在junkbstr.ini文件中取消注释forwardfile行。现在配置您的浏览器使用运行在本地主机端口8000的代理服务器,就可以了。

我相信其他代理服务器也有类似的功能 - 我只是喜欢Junkbuster,因为它是一个简单的独立可执行文件。


这个有效并回答了我的初始问题...;-) - Ben

2
您正在使用域名服务(DNS)领域。从技术上讲,通过高级DNS配置(包括重新映射端口),您提出的方案是可行的,并且在互联网上经常使用。然而,在本地进行如此麻烦和昂贵的操作似乎不太可能。
另一方面,我怀疑您真正的问题可以更容易地解决。为什么要将“example.com”解析到您的本地Web服务器?您已经可以将本地Web服务器引用为“localhost”,作为“127.0.0.1”,以及通过其分配的机器名称“workstation-x”。
我能想到并且也见过希望使用与生产Web服务器相同的主机名引用本地Web服务器的唯一原因是在应用程序的Web页面中硬编码服务器主机名。如果是这种情况,答案很简单:不要这样做!您应该始终实现Web应用程序,使它们相对于部署的服务器引用所有内容(其他页面、CSS、JS、图像等)。如果您跨多个服务器部署,则您的引用必须基于可配置的服务器主机名绝对参考。这很容易做到,没有理由不这样做。
如果不是这种情况,请解释您试图实现什么以及是什么激励了您尝试。
编辑:由于您已经确认了我的猜测,即Web页面中存在对生产主机名的硬编码引用问题,让我简单地添加一点,即我始终、毫无例外地发现修复实际问题比累积解决方法(例如您尝试重新映射端口)更便宜。我从未遇到过一个作者会持相反的观点。
修复这些页面应该不会比全局搜索和替换更难,特别是使用一个体面的文本编辑器。即使编写一个简单的脚本来更改源文件也比您尝试解决方法要便宜得多、容易得多。
无论如何,祝您一切顺利,让我们知道结果如何。

我认为这与DNS无关。DNS只关心主机名和IP地址,而不关心端口。 - Arnout
是的,不幸的是,它是硬编码的,我无法做太多改变。我知道你描述的方式是正确的,但有时候,特别是在处理旧代码时,你可能没有选择;而仅仅使用不同的端口似乎比软件重写更“便宜”... - Ben

0

请确认Web服务器是否在监听8080端口?使用命令"netstat -na"查看端口8080是否正在监听。

您是否在Apache配置文件中添加了8080端口,与默认的80端口相同?

一旦您在Apache配置文件中添加了8080端口以进行监听,并且双重检查Web服务器上是否正在监听8080端口,那么您将能够使用8080端口访问页面。例如:http://mytestwebserver:8080/index.html或类似内容...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接