Я пытаюсь настроить поддомены пользователей, обслуживая контент из определенных папок: www.example.com/username
служил от username.example.com
(как и страницы на github).
Я смотрел перезаписи Nginx, но я не хочу, чтобы браузер перенаправлял - я хочу, чтобы домен был username.example.com. Во всяком случае, комментарий к этот вопрос говорит, что я не могу переписать хост, только прокси к нему. Я пытался настроить proxy_pass
, но вся документация и примеры показывают, что он используется для (очевидно) прокси-сервера для службы на другом хосте или порту, но в моем случае я хочу просто прокси-сервер в другое место на том же хосте и порту.
Является ли это подходящим способом решения этой проблемы, и если да, то каков правильный синтаксис конфигурации Nginx?
Самый простой способ справиться с этим - заставить nginx обрабатывать каждый из каталогов как отдельный виртуальный хост.
server_name _;
root /var/www/$host;
Это потребует, чтобы физический путь к файлам был /var/www/username.example.com/
вместо того /var/www/username/
.
Для справки, это то, что я поместил в свою конфигурацию сайта nginx. Обратите внимание, что я сопоставляю субдомен и устанавливаю корень из него, а не из $host
как в ответе Шейна, поэтому я могу использовать / var / www / username на диске. Кроме того, все пользователи делятся stylesheets
и javascripts
папки.
server_name _;
set $myroot "";
if ($host ~ (.*)\.example\.com) {
set $myroot $1;
}
if ($host ~ ^www\.example\.com) {
set $myroot "";
}
location / {
root /var/www/$myroot;
index index.html index.htm;
autoindex on;
}
location ~ ^(/stylesheets|/javascripts) {
root /var/www;
}