Pull to refresh

Пользовательские поддомены

Reading time 1 min
Views 21K
С появлением новых проектов в сети иногда кажется, что задача эффективной организации пользовательских поддоменов (bob.someblog.com) кому-то представляется непростой. На самом деле, этот вопрос решается за одну минуту.
 



 
Подразумевается, что в качестве фронт-енд http-сервера используется nginx, а истинное расположение пользовательской директории — /users/bob/.

Чтобы проксировать домен bob.someblog.com и все его поддиректории на адрес someblog.com/users/bob/, можно использовать следующую настройку nginx:
 

    # someblog.com
    server {
        listen       11.22.33.44:80;
        server_name  someblog.com *.someblog.com;

        charset utf8;

        location / {
            # Proxy user domains to /users/$username
            if ($host ~* "^(([a-z0-9_\-]+)\.someblog\.com)$") {
                set $uid $2;
                rewrite ^(.*)$ /users/$uid$1 break;
            }

        ...

 
[a-z0-9_\-] — этот символьный класс определяется правилами регистрации пользователей, а именно набором допустимых символов, из которых может состоять имя.
 
Единственный минус — неудобство использования адреса вида www.someblog.com, один из вариантов решения — перенаправление посетителей на адрес someblog.com:
 
    if ($host ~* "^www\.someblog\.com$") {
        rewrite ^(.*)$ http://someblog.com$1 last;
    }


UPD: Речь идёт о такого рода проектах, где без лёгкого фронт-енд севера, такого как nginx, никуда.
UPD2: Обсуждение показало, что я всё же устарел во взглядах и унаследовал решение со старой версии nginx, где много чего не было. По адресу http://server-tuning.info/nginx/auto-subdomains.html можно почитать немного более современное решение. Спасибо ugnich
Tags:
Hubs:
+38
Comments 104
Comments Comments 104

Articles