пятница, 29 марта 2013 г.

Редирект поддомена на папку домена nginx

Добрый день.

Сегодня появилась необходимость сделать редирект на 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

    

Комментариев нет:

Отправить комментарий