2015-04-16 2 views
0

Я хотел бы перенаправить трафик с:Nginx перенаправление для определенного домена

 http://demo.foo.com/a.png 
to http://demo.bar.com/a.png 

Одно предостережение в том, что foo.com и bar.com оба та же коробка. Поэтому мне нужно указать, что перенаправление происходит только для трафика foo.com, чтобы избежать переадресации на трафик bar.com.

Я попытался это:

server { 
    server_name demo.foo.com; 
    return  301 $scheme://demo.bar.com$request_uri; 
} 

Выждав минуту для того, чтобы вступить в силу ... Это выглядит многообещающим:

curl -I http://demo.foo.com 

301 появился, как и ожидалось. Тем не менее, есть два вопроса:

1), запускаемых curl -I http://demo.bar.com также вернулся с 301 перенаправлять demo.bar.com (так что мой server_name фильтр не работает)
2) после нескольких минут (~ 2-3) и ротор команды перестают работать, и вернуть 503 Unavailable сообщение (это может быть связано с петлей редиректа, вызванного # 1)

ответ

1

Мы используем такую ​​Сабаиль:

server { 
    ... 

    server_name demo.foo.com demo.bar.com; 

    if ($http_host = "demo.foo.com") { 
     rewrite^http://demo.bar.com:$server_port$request_uri permanent; 
    } 

    ... 
} 
+0

Добавление, если заявление, кажется, что работает, даже если он указан как «плохая практика» или «падение ямы» для этого. Благодарю. Мне не нужна строка server_name. – Matt

Смежные вопросы