ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Вопрос по тексту ошибки



On 17.01.2013 16:21, Михаил Монашёв wrote:

                 location ~* "^/(?<phost>[a-z0-9\-\.]+)/(?<puri>.*)" {
                         proxy_pass              http://$phost:80/$puri;
                         proxy_set_header        Host    $1;
                         proxy_set_header        Referer "http://$phost/";;

в логе вот такая ошибка:
2013/01/17 17:47:58 [error] 3963#0: *8162 kevent() reported that connect() failed (60: Operation timed out) while 
connecting to upstream, client: 80.239.243.119, server: i99.beon.ru, request: "GET 
/ishop.top-kniga.ru/data/m_ishc/1084/1084845.jpg HTTP/1.1", upstream: 
"http://91.206.106.43:80/data/m_ishc/1084/1084845.jpg";, host: "i99.beon.ru", referrer: 
"http://tanitakokyto.beon.ru/24898-872-tema-dlja-raznyh-anket.zhtml";

По идее nginx должен был отрезолвить ishop.top-kniga.ru , соединится
с полученным ip и запросить 
http://ishop.top-kniga.ru/data/m_ishc/1084/1084845.jpg

Текст  ошибки меня удивил. Его я его понял так: не удалось соединиться
с   ip,   в   который  отрезолвился  ishop.top-kniga.ru.  Но  при  это
показываются странные данные про апстрим:
upstream: "http://91.206.106.43:80/data/m_ishc/1084/1084845.jpg";
Хотя мне видится, что он должен быть таким:
http://ishop.top-kniga.ru/data/m_ishc/1084/1084845.jpg , ведь в
конфиге написано:
proxy_pass              http://$phost:80/$puri;
, где $phost - это домен, а не ip.

Как получилось http://91.206.106.43:80/data/m_ishc/1084/1084845.jpg
понятно. Вопрос в том, правильно ли это?

судя по описанию http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_pass - да, так и должно быть.

ведь доменное имя ishop.top-kniga.ru в общем случае может ресолвиться
в несколько разных IP, и если скрывать адрес апстрима, с которым не удалось соединиться - толку от такого декоративного лога будет мало.

особенно, если апстрим будет задан отдельным блоком upstream { ... }

====================================================================

Имя сервера, его порт и передаваемый URI можно также полностью задать с помощью переменных:

    proxy_pass http://$host$uri;

или даже так:

    proxy_pass $request;

В этом случае имя сервера ищется среди описанных групп серверов и если не найдено, то определяется с помощью resolver?а.

====================================================================

--
Best regards,
 Gena

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.