Моя установка:
Пути к каждому домену на сервере выглядят так:
/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
как корень.
В карта модуль, вероятно, самый простой в обслуживании.
map $uri $username {
/example.com alice;
/example.org alice;
/example.net bob;
}
root /srv/www;
rewrite ^/([^/]+)/(.*)$ /$username/data/www/$1/$2 last;