Еще один вопрос о правилах перезаписи 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.