Apache-2.2
通過共享域訪問伺服器上的所有網站
我的設置是:
- 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/all
root 身份設置一個虛擬主機。在 nginx 中手動配置映射
map模組可能是最容易維護的。
map $uri $username { /example.com alice; /example.org alice; /example.net bob; } root /srv/www; rewrite ^/([^/]+)/(.*)$ /$username/data/www/$1/$2 last;