我有一个有趣的问题,我想我会看到你们认为什么是最好的解决scheme之前,盲目尝试随机的东西。
基本上,我有两台服务器(一台Linux和一台Windows)在我的家里跑在标准的Linksys路由器后面。 现在80端口被转发到我的Linux机器,因为它托pipe了一些网站。 但是随着我的Windows服务器的增加,我也需要能够使用端口80。 很明显,我不能让路由器转发到80,所以我想知道是否有办法让Linux服务器自动(透明地)隧道/转发/无论任何请求与给定域的Windows机器。 因此,当来自域blah.example.com的请求命中Linux服务器时,我希望它将其直接发送到Windows服务器进行处理,如果它是任何其他域,则Linux服务器应该自己处理它,而不是转发它。 理想情况下,我希望这样做,Windows Server不需要特别configuration:它不应该能够区分由其他服务器转发的请求或由路由器直接转发的请求。
我知道这可能需要修改IP表或类似的东西,如果是这样,请慢一点,因为我从来没有骗过这些。 此外,我现在没有物理访问权限,只有SSH,所以如果有任何build议可能会中断/禁用SSH连接(显然这很糟糕),请警告我。 任何帮助非常感谢,提前感谢! 🙂
看看Apache的mod_proxy( http://httpd.apache.org/docs/2.0/mod/mod_proxy.html )。 基本上,您将为forwardthistowindows.example.com设置一个VHOST,并告诉mod_proxy将所有请求传递给windows.example.com。
检查文档,但你可能会想要的东西
ProxyPass / http://windows.example.com
如果你没有在你的Linux机器上使用Apache,我build议你不要只用它来做这件事,这是过度的,而且会对机器的资源造成很大的影响。
我build议你使用nginx :它是轻量级的,稳定的,并已被像wordpress.com这样的主要网站使用(请看这里 )。 从nginx的关于页面 :
nginx [引擎x]是一个HTTP和反向代理服务器
你将要使用nginx作为反向代理 – 这是如何在Ubuntu上做到的 。 我也推荐你看看nginx的官方维基代理例子 。
根据您的意见编辑:
要将真实IP转发给Windows主机,请设置以下标题:
proxy_set_header X-Real-IP $remote_addr;
希望有所帮助。
你可能想要做的是一个反向代理。 假设Linux服务器上的其他网站在Apache下运行。 然后使用mod_proxy你的configuration将是这样的:
<VirtualHost *:80> ServerName externalwin.example.com ProxyPass / http://internal.example.com/ ProxyPassReverse / http://internal.example.com/ </VirtualHost>
还有很多其他的方法来configuration反向代理和Apache以及其他Web或代理服务器软件。
您需要在Windows服务器上configuration的唯一东西是确保它输出的任何URL使用外部地址。