Description
Рекомендуемое значение: не использовать директиву if в корне конфигурации из за её неэффективности.
Область действия: http, server.
Подробнее: Если сервер имеет псевдоним (например test.net как основное имя и www.test.net как псевдоним), то использование конструкции
server {
server_name test.net *.test.net;
if ($host ~* ^www\.(.+)) {
set $raw_domain $1;
rewrite ^/(.*)$ $raw_domain/$1 permanent;
[...]
}
}
очень неэффективно (см. статью If is Evil?), так как конструкция if будет вызываться для каждого запроса домена test.net. Рекомендуется использовать перенаправление на основное имя:
server {
server_name www.test.net;
return 301 $scheme://test.net$request_uri;
}
server {
server_name test.net;
[...]
}
В данном примере при доступе к www.test.net (псевдониму test.net) клиенту отправляется постоянный редирект (301 Moved Permanently) на основное имя сайта.