Apache-2.2

通過共享域訪問伺服器上的所有網站

  • August 12, 2012

我的設置是:

  • Nginx(80) 作為透明代理
  • Apache(81) 作為後端 Web 伺服器

伺服器上每個域的路徑如下:

/var/www/$username/data/www/$domainname

當然要訪問文件,您需要使用每個網站的域名。但我想要一種使用這樣的 URL 訪問所有域的方法:

http://dm.some.com/clientdomain.com 

我怎樣才能做到這一點?該 URL 將僅用於訪問靜態文件,因此我認為最好使用 Nginx。

問題是確定特定域的使用者名。實際上讓 nginx 搜尋所有使用者名以找到這很棘手而且不是最佳的。我能想到兩種方法。

將所有域符號連結到一個目錄

創建一個目錄,其中包含指向每個域的符號連結,例如:

/srv/www/all/example.com -> /srv/www/alice/data/www/example.com
/srv/www/all/example.org -> /srv/www/alice/data/www/example.org
/srv/www/all/example.net -> /srv/www/bob/data/www/example.net

然後只需在 nginx 中以/srv/www/allroot 身份設置一個虛擬主機。

在 nginx 中手動配置映射

map模組可能是最容易維護的。

map $uri $username {
   /example.com    alice;
   /example.org    alice;
   /example.net    bob;
}

root /srv/www;
rewrite ^/([^/]+)/(.*)$ /$username/data/www/$1/$2 last;

引用自:https://serverfault.com/questions/416377