通过共享域访问服务器上的所有网站

通过共享域访问服务器上的所有网站

我的设置是:

  • 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/allroot 身份在 nginx 中设置虚拟主机。

在 nginx 中手动配置映射

地图模块可能是最容易维护的。

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

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

相关内容