Subdomain
如何從客戶的域名載入我的應用程序
我正在建構一個託管在其上的 SAAS 產品,
abc.com
並且我將很少有具有域client1.com
等client2.org
的客戶端client3.in
。現在我想將我的應用程序提供給他們域上的每個客戶,例如
client1.com/app
,client2.com/app``client3/com/app
我不想在他們的伺服器上託管我的程式碼。我的網站上只有 1 個基本程式碼和 1 個 DB
abc.com
。所以我的整個應用程序應該在他們的域上執行問題是,我該如何配置?我的意思是
client.com
會指向他們的伺服器,但client.com/app
會使用他們自己域的基本 url 從我的伺服器執行我的應用程序?謝謝..
我能想到的最簡單的方法是使用 mod_proxy (如果在客戶端的域上使用 apache)
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
另一種方法是讓 php 腳本代理數據:
<?php $opts = array( 'http'=>array( 'method'=>"GET", 'header'=>"Accept-language: en\r\n" . "Cookie: foo=bar\r\n" ) ); $context = stream_context_create($opts);1 /* Sends an http request to www.example.com with additional headers shown above */ $fp = fopen('http://www.example.com/app?q='.$_GET['q], 'r', false, $context); fpassthru($fp); fclose($fp); ?>
如果您可以添加 .htaccess,我建議使用 .htaccess 將應用程序中的所有內容重定向到使用類似於以下內容的內容:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
您可能需要進行一些調整才能使其駐留在 /app 中。然後你的包裝腳本必須學會以不同的方式將 q=$1 變數傳遞給主機。我的範例非常原始,並且沒有檢查錯誤。
我還會為每個站點發送一個帶有域的固定查詢。這樣一來,您的應用程序就可以更輕鬆地破譯它的來源,而不必依賴 IP 地址等。此外,您還必須處理會話,因為所示的包裝器不會將 cookie 一直傳遞到客戶端並返回。而 abc.com 域只會看到託管包裝腳本的伺服器的 IP。