我有一个有趣的问题,我想在盲目地尝试随机的东西之前,我会看到你们认为最好的解决方案。
基本上,我有两个服务器(一个Linux和一个Windows)在我家的标准Linksys路由器后面运行。现在,端口80正被转发到我的Linux机器上,因为它承载了许多网站。但是,随着我的Windows服务器的增加,我也需要能够使用端口80。显然,我不能让路由器将80转发到两者,所以我想知道是否有一种方法可以让Linux服务器自动(并且透明地)隧道/转发/任何具有给定域的请求到Windows机器。因此,当来自域blah.example.com的请求到达Linux时,我希望它直接发送给Windows进行处理,如果它是其他域,则Linux应该自己处理,而不是转发。理想情况下,我希望这样做可以使Windows Server不需要特别配置:它不应该区分由其他服务器转发的请求和由路由器直接转发的请求之间的区别。
我知道这可能需要修改IP表或类似的东西,如果是这样的话,请慢慢来,因为我从来没有愚弄过这些表。另外,我现在没有物理访问权,只有SSH,所以请警告我,如果您建议的任何东西可能会破坏/禁用SSH连接(很明显,这将是非常糟糕的)。任何帮助都是非常感谢的,谢谢!:)
发布于 2011-07-14 20:25:56
查看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发布于 2011-07-14 21:16:58
如果您还没有在Linux机器上使用Apache,我不建议您只使用它来完成这个任务,因为这是过度使用的,并且对机器的资源造成了更大的负担。
我建议您使用nginx:它是轻量级的、稳定的,并且已经被wordpress.com这样的主要站点使用过(参见这里)。来自nginx的关于页:
nginx 引擎x是一个HTTP和反向代理服务器。
您将希望使用nginx作为反向代理--以下是如何在Ubuntu上做到这一点。我还建议您查看的官方wiki代理示例。
根据您的评论编辑:
若要将实际IP转发到windows主机,请设置以下标题:
proxy_set_header X-Real-IP $remote_addr;希望这能帮上忙。
发布于 2011-07-14 20:42:23
您可能要做的是反向代理。假设linux服务器上的其他网站运行在Apache下。然后使用国防部_代理,您的配置如下所示:
<VirtualHost *:80>
ServerName externalwin.example.com
ProxyPass / http://internal.example.com/
ProxyPassReverse / http://internal.example.com/
</VirtualHost>还有许多其他方法可以使用Apache和其他web或代理服务器软件配置反向代理。
您需要在Windows服务器上配置的唯一一件事是确保它输出的任何URL都使用外部地址。
https://serverfault.com/questions/290503
复制相似问题