Назад | Перейти на главную страницу

Доступ ко всем веб-сайтам на сервере через общий домен

Моя установка:

Пути к каждому домену на сервере выглядят так:

/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 как корень.

Настроить отображение в nginx вручную

В карта модуль, вероятно, самый простой в обслуживании.

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

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