2013-03-14 3 views
0

это мой конфиг:nginx subdomian to directory, слишком много перенаправления, почему?

server { 
listen  80; 
server_name ~^(?<sb>.+)\.a\.b\.c\.com$; 
access_log /data/logs/nginx/tas.access.log main; 
location/{ 
    proxy_intercept_errors on; 
    proxy_pass http://b.c/a/$sb/; 
    proxy_set_header Host $host; 
    proxy_redirect off; 
} 

}

и браузер доклад много переадресаций.

+0

Где указывает 'proxy_pass http: //b.c/a/$sb/;'. Кажется немного странным. – Bart

+0

Что вы хотите достичь кстати? – Bart

+0

Это восходящий поток, localhost: 8082 – user2168454

ответ

0

Если, как вы говорите, вы хотите, чтобы прокси-сервер на локальный хост: 8082, вы должны сказать в proxy_pass линии:

server { 
    listen 80; 
    server_name ~^(?<sb>.+)\.a\.b\.c\.com$; 
    access_log /data/logs/nginx/tas.access.log main; 
    location/{ 
     proxy_intercept_errors on; 
     proxy_pass http://localhost:8082/a/$sb/; 
     proxy_set_header Host $host; 
     proxy_redirect off; 
    } 
} 
0

Без всей информации, это трудно догадаться, что происходит. Основываясь на комментариях, я предполагаю, что вы используете виртуальный хостинг, чтобы восходящий сайт также обслуживался одним и тем же nginx. Так эта линия проблема:

proxy_set_header Host $host; 

Nginx переменных $ хост указует на текущий заголовок узла (который соответствует server_name). Поэтому, если вы снова установите один и тот же заголовок узла для восходящего потока, тогда nginx найдет тот же самый блок местоположения, потому что nginx полагается на заголовок Host, чтобы найти правильный сервер. Таким образом, цикл перенаправления.

Set

proxy_set_header Host your_upstream_server_name 

исправит это тогда.

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