我在兩台不同的伺服器上託管網站時遇到問題。我的公司使用 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 上的網頁伺服器將充當HTTP 代理並接受/MyMvcController/MyPage 的請求,將該傳入請求轉換為對www.yourwindowsserver.com/clients/clientXYZ/MyPage 的傳出請求,接收回應並將傳出請求重新傳輸回覆網站訪客。
Linux Web 伺服器通常使用 Apache Web 伺服器。反向代理配置要么使用 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