Пользовательские субдомены Nginx, я должен proxy_pass? - PullRequest
0 голосов
/ 09 марта 2011

Я пытаюсь настроить пользовательские субдомены, обслуживая контент из определенных папок: www.example.com/username обслуживается из username.example.com (как страницы github).

Я смотрел на Nginx переписывает, но я не хочу, чтобы браузер перенаправлял - я хочу, чтобы домен был username.example.com. В любом случае, комментарий к этому вопросу говорит, что я не могу переписать хост, только прокси для него. Я попытался настроить proxy_pass, но во всей документации и примерах показано, что он используется (очевидно) для прокси для службы на другом хосте или порте, но в моем случае я хочу просто прокси на другое местоположение на том же хосте и порт.

Является ли это подходящим способом решения этой проблемы, и если да, то каков правильный синтаксис конфигурации Nginx?

1 Ответ

0 голосов
/ 07 апреля 2011

Примерно так должно работать:

server {
  location / {
    # simple version
    if ( $host ~ "user1.example.com" ) {
      proxy_pass http://example.com/user1;
    }

    # generic version
    if ( $host ~ ^(.+)\.example\.com$ ) {
      proxy_pass http://example.com/$1;
    }


  }
}

Но я сомневаюсь, что это будет работать так, как ожидалось, из-за части "/ user1" в прокси-адресе, хотя я не уверен в последствиях.

Другой способ сделать это, который наверняка сработает, - это либо обслуживать все приложения с одним и тем же сервером nginx, либо назначать определенный порт каждому другому nginx. Вот как бы я это сделал:

server {
  location / {

    if ( $host ~ "user1.example.com" ) {
      proxy_pass http://127.0.0.1:8000;
    }

    if ( $host ~ "user2.example.com" ) {
      proxy_pass http://127.0.0.1:8001;
    }
  }
}

В прошлый раз, когда я делал это для проекта колледжа, и я использовал специальный плагин для его обработки, может быть также какой-то плагин, который может сделать это для nginx, но я не нашел ни одного после быстрого поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...