Сопоставление поддоменов с URL с помощью nginx

Я очень новичок в nginx, так что прости меня, если мои объяснения выключены. Я сделаю все возможное, чтобы объяснить, чего я пытаюсь достичь.

Используя WordPress и nginx, я бы хотел, чтобы учетные записи пользователей отображались на поддомен основного домена. Например, если пользователь создает учетную запись с именем «sample», субдомен для этого пользователя будетsample.example.com.

Когда пользователь идет вsample.example.com, поддомен должен быть сопоставлен сexample.com/sample/, Точно так же, если пользователь посещаетsample.example.com/account/, он должен отображаться наexample.com/sample/account/, и так далее и тому подобное. Следует отметить, чтоexample.com/sample/ URL-адреса переписаны такого типа структуры:example.com/index.php?user=sample.

Есть также несколько зарезервированных поддоменов, которыене должен быть перенаправлен, например, cdn и admin. Они должны игнорироваться этими правилами, если они запрашиваются.

Как я могу добиться этого автоматически, когда пользователь создает учетную запись? Цель здесь - автоматизация - настройте ее один раз правильно и не беспокойтесь об этом. Поскольку я буквально только начал работать с nginx несколько дней назад, я не уверен, с чего начать. Любой совет, чтобы двигать меня в правильном направлении, был бы невероятно полезен. Вот мой текущий конфигурационный файл для домена:

server {
    listen          80;
    server_name     www.example.com;
    rewrite     ^(.*) $scheme://example.com$1 permanent;
}

server {
    listen          443 ssl;
    server_name     www.example.com;
    rewrite         ^(.*) $scheme://example.com$1 permanent;
}

server {
    listen      80;
    server_name example.com;

    access_log  /var/www/example.com/logs/access.log;
    error_log   /var/www/example.com/logs/error.log;

    root        /var/www/example.com/public;
    index       index.php;

    location / {
        try_files $uri $uri/ @wordpress /index.php?q=$request_uri;
    }

    location @wordpress {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_param SCRIPT_FILENAME /var/www/example.com/public/index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_NAME /index.php;
    }

    # Pass the PHP scripts to FastCGI server listening on UNIX sockets.
    #
    location ~ \.php$ {
        try_files $uri @wordpress;
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/example.com/public$fastcgi_script_name;
        include        fastcgi_params;
    }
}

server {
    listen                      443 ssl;
    ssl                         on;
    keepalive_timeout           70;
    server_name                 example.com;
    ssl_certificate             ssl/example.com.chained.crt;
    ssl_certificate_key         ssl/example.key;
    ssl_protocols               SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers                 HIGH:!aNULL:!MD5;
    ssl_session_cache           shared:SSL:10m;
    ssl_session_timeout         10m;
    ssl_prefer_server_ciphers   on;

    root        /var/www/example.com/public;
    index       index.php;

    location / {
        try_files $uri $uri/ @wordpress /index.php?q=$request_uri;
    }

    location @wordpress {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_param SCRIPT_FILENAME /var/www/example.com/public/index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_NAME /index.php;
    }

    # Pass the PHP scripts to FastCGI server listening on UNIX sockets.
    #
    location ~ \.php$ {
        try_files $uri @wordpress;
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/example.com/public$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Я понимаю, что то, что я пытаюсь достичь, вероятно, должно идти в/etc/nginx/nginx.conf файл, если я хочу, чтобы он был автоматизирован, и я активно пытаюсь узнать, как этого добиться. Я просто застрял там, где я сейчас нахожусь, и ищу любой совет / помощь, которая бы указала мне правильное направление. Я хочу учиться!

Ответы на вопрос(3)

Ваш ответ на вопрос