我有一个用 PHP 编写的网站,它由安装在 Linux 上的 Apache 提供服务。也就是说,它的 URL 是example.com
,它有子文件夹audio
、games
、photo
,因此用户指向它时为example.com/photo
。
现在,我正在 ASP.Net 中编写新功能(例如,观看电影的能力),并希望用户可以访问它example.com/video
。 而为其提供服务的 IIS 安装在另一台服务器上,该服务器在互联网上不可见(只有 Apache 可以直接访问互联网),但可以通过内联网从 apache 轻松访问它。
用户会话并不重要!
我应该如何配置才能有效工作?我可能需要安装更多软件吗?
我发布了我的解决方案,据我所知寻路者意思,但如果有的话,我愿意听取其他建议。
答案1
您已经标记了问题“反向代理”,因此您说的很正确:)
我认为 Apache 是您在 :80 上针对您的公共 IP 的默认侦听器?如果是这种情况,那么您将需要配置 Apache 的mod_proxy
模块,并将其配置为重写example.com/video
对IISSERVER/video
如果你的默认监听器是 IIS,那么思路是一样的,但是你需要使用商业产品,比如ISAPI 重写去做这个。
答案2
是的,Apache 是 80 端口上公共 IP 的默认侦听器。我在虚拟主机中使用ProxyPass
并ProxyPassReverse
添加了以下几行:
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /video http://iis_ip:iis_port
ProxyPassReverse /video http://iis_ip:iis_port
但我怀疑我是否选择了最佳解决方案。我看到的替代方案之一是安装 ngin 并将其设为默认。然后将请求从 nginx 转发到 Apacge 和 IIS。也许还有其他变体,所以我暂时不会关闭问题。
答案3
我是新来的,所以我不能投票赞成 Farseeker 的答案。但这确实有用 - Apache reverseproxy是你想要什么?你可以使用许多不同的产品来实现这一点,但考虑到你所说的,这可能是最好的答案。