Подстановочный знак nginx переписать - PullRequest
0 голосов
/ 02 февраля 2012

Я подозреваю, что это будет довольно просто, но я не могу разобраться с системой переписывания nginx.Надеюсь, кто-нибудь сможет мне помочь?

Проще говоря, мне нужно ..

http://example.com/?c=foo

чтобы переписать в ...

http://foo.example.com

Заранее спасибо, если вы взяли жалость на этом nginx noob :)Я продолжу пробовать это, и в маловероятном случае, когда я доберусь до момента «эврика», я обновлю это, чтобы помочь любому, кто испытывает / когда-либо столкнется с подобной «проблемой».Приветствия.

1 Ответ

1 голос
/ 02 февраля 2012

На самом деле, невозможно сделать внутреннее перенаправление на другой домен в Nginx.Но есть два доступных решения:

1) Простое: сделать перенаправление на указанный адрес.Пример:

if ( $arg_c ) {
    rewrite ^ http://$arg_c.example.com;
}

2) Сложный: если вы используете Nginx в качестве прокси между php-fpm, apache или чем-то еще, вы можете установить заголовок Host следующим образом: set $ new_host example.com;

if ( $arg_c) {
    set $new_host $arg_c.example.com;
}

и передать его в качестве параметра:

proxy_set_header   Host $new_host;
...