Добрый день.
Сегодня появилась необходимость сделать редирект на nginx'e с поддомена http://test.test.com на http://test.com/test с передачей параметров, что бы запросы вида http://test.test.com/argument перенаправлял на http://test.com/test/argument.
Немного гугла и решение нашлось. Поделюсь им с другими ну и себе оставлю заметку.
1. Правим конфиг nginx.
# nano /etc/nginx/nginx.conf
Ищем секцию:
server {
server_name test.test.com www.test.test.com;
listen <ServerIP>;
.....
}
И редактируем
server {
server_name test.test.com www.test.test.com;
listen <ServerIP>;
rewrite ^(.*)$ http://test.com/test$1 permanent;
}
Небольшое описание, на сколько мне хватает понимания:
server_name - имя сервера виртуального хоста, тут определяется, что при запросе данного хоста обработка будет происходить именно в этом блоке server { ... }.
listen - задает адрес и порт на котором сервер будет принимать запросы. Порт не обязательный параметр, если он не указан, то берется стандартный 80 порт.
rewrite - первый аргумент ( ^(.*)$ ) означает, что берем аргумент к test.test.com введенный пользователем и заменяем на http://test.com/test<аргумент> и возвращаем пере направление с кодом 301.
Немного покажу на примере.
Если пользователь введет:
http://test.test.com/index.php?query=things&page=4
то после рерайта мы получим:
http://test.com/test/index.php?query=things&page=4
То что нам и нужно.
2. Перезагружаем конфиг nginx'a.
Так как мы не хотим, что бы веб-сервер перезагружался и все активные соединения прервались, протсто загрузим новый конфиг "на лету".
# /etc/init.d/nginx reload
Сегодня появилась необходимость сделать редирект на nginx'e с поддомена http://test.test.com на http://test.com/test с передачей параметров, что бы запросы вида http://test.test.com/argument перенаправлял на http://test.com/test/argument.
Немного гугла и решение нашлось. Поделюсь им с другими ну и себе оставлю заметку.
1. Правим конфиг nginx.
# nano /etc/nginx/nginx.conf
Ищем секцию:
server {
server_name test.test.com www.test.test.com;
listen <ServerIP>;
.....
}
И редактируем
server {
server_name test.test.com www.test.test.com;
listen <ServerIP>;
rewrite ^(.*)$ http://test.com/test$1 permanent;
}
Небольшое описание, на сколько мне хватает понимания:
server_name - имя сервера виртуального хоста, тут определяется, что при запросе данного хоста обработка будет происходить именно в этом блоке server { ... }.
listen - задает адрес и порт на котором сервер будет принимать запросы. Порт не обязательный параметр, если он не указан, то берется стандартный 80 порт.
rewrite - первый аргумент ( ^(.*)$ ) означает, что берем аргумент к test.test.com введенный пользователем и заменяем на http://test.com/test<аргумент> и возвращаем пере направление с кодом 301.
Немного покажу на примере.
Если пользователь введет:
http://test.test.com/index.php?query=things&page=4
то после рерайта мы получим:
http://test.com/test/index.php?query=things&page=4
То что нам и нужно.
2. Перезагружаем конфиг nginx'a.
Так как мы не хотим, что бы веб-сервер перезагружался и все активные соединения прервались, протсто загрузим новый конфиг "на лету".
# /etc/init.d/nginx reload