我在将网站托管在 2 个不同的服务器上时遇到了问题。我的公司使用 ASP.NET MVC 为客户开发了几个页面,他们的网站托管在 Linux 上。我们应该在我们的 Windows 主机上托管这几个页面及其 dll、图像、css 和 js 文件(它有 1 个 IP 和许多其他网站托管在上面),但地址应该是他们的域名……比如www.ClientDomainLinux.com/MyMvcController/MyPage
我是一名开发人员,我不确定我应该如何设置 IIS 来实现这一点...他们已经设置了一个指向我们托管的代理,但没有一个 css、图像或 js 文件加载,而且它不起作用...
我需要一些关于如何设置 IIS 以使链接正常工作的帮助,
我们非常感谢任何想法。
谢谢
答案1
我想到两个解决方案。
第一个是您的客户端 Linux 网站上的简单框架/iFrame,其中包含 ASP.NET www.yourwindowsserver.com/clients/clientXYZ/MyPage。
设置起来很简单,但对于您客户网站的技术更精湛的访问者来说,他们会被重定向到第二台服务器。
第二种选择是将 Linux 网站的一部分配置为反向代理。这样做的好处是,对于访问者来说,它将显得无缝,因为他们只连接到 www.ClientDomainLinux.com。www.ClientDomainLinux.com 上的 Web 服务器将充当 HTTP 代理,并接收 /MyMvcController/MyPage 的请求,将该传入请求转换为对 www.yourwindowsserver.com/clients/clientXYZ/MyPage 的传出请求,接收回复并将该回复重新传输给网站访问者。
Linux 网络服务器通常使用 Apache 网络服务器。反向代理配置要么使用 mod_proxy,要么使用 mod_rewrite,这通常是管理员需要配置的。
# somewhere in the main apache configuration file
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
# either in the virtual host definition for www.ClientDomainLinux.com or possibly .htaccess
ProxyPass /MyMvcController/MyPage http://www.yourwindowsserver.com/clients/clientXYZ/MyPage
ProxyPassReverse /MyMvcController/MyPage http://www.yourwindowsserver.com/clients/clientXYZ/MyPage
使用重写规则的替代方案如下所示:
# somewhere in the main apache configuration file
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
# either in the virtual host definition for www.ClientDomainLinux.com or possibly .htaccess
RewriteRule ^/MyMvcController/MyPage(.*) http://otherhost/otherpath$1 [P]
http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html http://httpd.apache.org/docs/2.4/mod/mod_proxy.html