Re: имя хоста в proxy_pass
Igor Sysoev
igor на sysoev.ru
Вт Мар 30 14:15:14 MSD 2010
On Tue, Mar 30, 2010 at 12:24:42PM +0400, Alexey Loskutov wrote:
> Здравствуйте,
> у меня есть такие location'ы:
> location /youtube-gdata/feeds/api/ { proxy_pass
> http://gdata.youtube.com/feeds/api/; }
> location /maps/ {proxy_pass http://static-maps.yandex.ru/1.x/;}
>
> иногда nginx не запускается.
>
> проблема вероятно в том, что, nginx при запуске пытается получить
> dns-записи для хостов gdata.youtube.com и static-maps.yandex.ru, и
> если не может этого сделать, выдает ошибку и не запускается вообще. Но
> ведь кроме этих у него еще полно других полезных локейшнов :)
>
> Проявляется это при перезугрузке сервера, в лог ничего не пишется,
> поэтому отследить проблему сложно.
> Сервисы network и bind и запускаются раньше nginx'a.
>
> Есть ли какое-нибудь хорошее решение такой проблемы? забивать
> ip-адреса в /etc/hosts или в конфиг не хочется.
Нужно добавить куда-нибудь в проксируемый URL переменную, тогда хосты
будут резолвиться в ран-тайме, но выглядит это криво:
http {
resolver 127.0.0.1;
server {
location /youtube-gdata/feeds/api/ {
rewrite ^/youtube-gdata(.+) $1 break;
proxy_pass http://gdata.youtube.com$uri;
}
location /maps/ {
rewrite ^/maps(.+) /1.x$1 break;
proxy_pass http://static-maps.yandex.ru$uri;
}
Хотя нужно сделать что-то вроде "proxy_resolve_host on|off".
--
Игорь Сысоев
http://sysoev.ru
Подробная информация о списке рассылки nginx-ru