我的设置是:
- Nginx(80) 作为透明代理
- Apache(81) 作为后端 Web 服务器
服务器上每个域的路径如下:
/var/www/$username/data/www/$domainname
当然,要访问这些文件,您需要使用每个网站的域名。但我想要一种使用如下 URL 访问所有域名的方法:
http://dm.some.com/clientdomain.com
我该怎么做?此 URL 将仅用于访问静态文件,因此我认为最好使用 Nginx。
答案1
问题在于确定特定域的用户名。实际上,让 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
然后以/srv/www/all
root 身份在 nginx 中设置虚拟主机。
在 nginx 中手动配置映射
这地图模块可能是最容易维护的。
map $uri $username {
/example.com alice;
/example.org alice;
/example.net bob;
}
root /srv/www;
rewrite ^/([^/]+)/(.*)$ /$username/data/www/$1/$2 last;