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

перезапись поддомена nginx

Еще один вопрос о правилах перезаписи nginx

Как я могу переписать из http://www.*.domain.com к http://*.domain.com ?

заранее спасибо

- Деб

РЕДАКТИРОВАТЬ:

Мне очень жаль, что я не видел, как текстиль удалил * из моего вопроса. Исправил сейчас. Что мне нужно сделать, так это перейти с www.joe.domain.com на joe.domain.com, где joe может быть любым словом.

Это неплохой прием.

Самый быстрый способ повышения производительности был бы

server {
  server_name www.domain.com;
  rewrite ^ http://domain.com$request_uri permanent;
}

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

Кроме того, вам не нужно перезапускать nginx - перезагрузка - это все, что требуется, а кто хочет иметь больше времени простоя, чем требуется?

Какое значение имеет дополнительный период перед доменом.com? Есть ли цель удалить www из URL? Если да, то это должно помочь:

if ($host ~* www\.(.*)) {
  set $host_without_www $1;
  rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo'
}

Не забывайте: sudo /etc/init.d/nginx restart загрузить это

Источник: NGINX Вики

Вы можете использовать имена серверов регулярных выражений (см. http://nginx.org/en/docs/http/server_names.html#regex_names):

server {
  listen 80;
  listen 443;
  server_name ~^www\.(\w+)\.domain\.com$
  location / {
    rewrite ^ $scheme://$1.domain.com$request_uri permanent;
  }
}

Решение Martin F все хорошо, пока у вас не будет сотен доменов. Однако я бы посоветовал пойти другим путем - обслуживать приложение на www.joe.domain.com и перенаправлять с joe.domain.com. Совершенно уверен, что это в RFC.