В Nginx версий до 0.9.1 переадресация (301 редирект) может задаваться следующим образом:
server {
listen 80;
server_name example.com;
rewrite ^ http://example-site.com$request_uri;
}
В современных версиях веб-сервера, согласно официальной документации в Nginx redirect нужно настраивать используя return с указанием кода HTTP ответа (301 или 302)
server {
listen 80;
server_name example.com;
return 301 http://$host$request_uri;
}
В примере приведен пример настройки переадресации все запросов к страницам одного сайта на страницы другого сайта.
Nginx редирект с www на без www
server {
listen 80;
server_name www.example.com;
return 301 http://example.com$request_uri;
}
Nginx редирект на https
server {
listen 80;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
или
server {
listen 80;
server_name www.example.com example.com;
return 301 https://example.com$request_uri;
}
В последнем случае редирект будет отрабатывать для www.example.com и example.com, все запросы будут направляться на имя без www, доступную по https.
Если переадресация нужна только для example.com без www, то www.example.com можно указать в качестве server_name в отдельной специально созданной секции конфигурационного файла
server {
listen 80;
server_name www.example.com;
…
}
Также часто возникает необходимость переадресовывать запросы ко всем доменам в конфигах на один, сделать это можно задав две секции server и директиву default_server, под которую будут попадать все имена сайтов кроме заданных непосредственно (example.com и www.example.com в примере).
server {
listen 80;
server_name example.com www.example.com;
…
}
server {
listen 80 default_server;
server_name _;
return 301 http://example.com$request_uri;
}
Если на сервере используется конфигурация Nginx + Apache, Nginx + Unicorn или подобная редирект всегда настраивается для того пакета, который первым обрабатывает запрос принимая его непосредственно от пользователя
netstat -nltp | grep 80
Для большинства конфигураций в выводе будет именно рассматриваемый веб-сервер — если это так, переадресацию нужно настраивать для него.