目前,我们有一个 IIS 服务器作为我们的主要 Web 服务器。我们正在实施一个 Apache 服务器来代替它,但仍然需要让 IIS 服务器可以访问。通常,这是一件简单的事情,因为 Apache2 可以将子域代理到此服务器。
然而,我们的问题是:我们在 IIS 服务器上使用 dotnetCharting,而许可与域名绑定。为了使 dotnetCharting 正常工作,必须购买另一个许可证。
我的问题是,Apache2 可以代理子目录吗?例如,“www.example.com/subdir”可以指向 IIS 服务器吗?这似乎不是不可能的,但我似乎找不到解决方案。
答案1
当然可以。但要小心;许多 Web 应用程序的设计并不适合更改其 URL 路径。该应用程序当前是否在子目录中使用?
# You'll probably want this to maintain the host mapping in IIS
ProxyPreserveHost On
# Swap in the IP address or internal host name of your IIS server:
ProxyPass /subdir/ http://192.0.2.100/subdir/
或者,如果您要更改 URL 路径,请记住,由于资源(CSS、javascript、图像)的绝对路径,很多应用程序都会遇到问题:
ProxyPass /subdir/ http://192.0.2.100/
ProxyPassReverse /subdir/ http://192.0.2.100/
答案2
末尾的斜线不是必需的。我的设置如下
ProxyPass /dir http://exmpale.com/dir/
ProxyPassReverse /dir http://exmpale.com/dir/
并且顶层可以工作,但是主目录下的子目录中的所有内容却没有工作。
我将其改为这样,一切正常。
感谢您的错误信息!!!
ProxyPass /dir http://exmpale.com/dir
ProxyPassReverse /dir http://exmpale.com/dir
答案3
当然。
- 启用 mod_proxy mod_proxy_http
在 Apache VHost 中设置以下指令
ProxyPass /subdir http://iis.server/.../ ProxyPassReverse /subdir http://iis.server/.../
注意最后的“/”是强制性的。
答案4
我发现以下方法有效,但不带有尾随 / :
ProxyPass /dir http://exmpale.com/dir
ProxyPassReverse /dir http://exmpale.com/dir
尽管这(不要介意协议)仅适用于尾随 / :
ProxyPass / ajp://server.ip.address:8009/
ProxyPassReverse / ajp://server.ip.address:8009/
我不会说
注意最后的“/”是强制性的。