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