ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


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


  ПРОГРАММЫ 



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














     АРХИВ :: Apache-Talk
Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)

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

Re: [apache-talk] Проблема с портами при авторидиректе




On Tue, 25 Jan 2005, Kpoxa wrote:

Проявилась следующая проблема:

на отдельном сервере стоит apache+mod_accell, у сервера 1 адрес.
прописаны наразных портах виртуальные сервера:
<VirtualHost _default_:8001>
  AccelPass           / http://srv001/ [MC=30,MW=100,PH]
</VirtualHost>
<VirtualHost _default_:8002>
  AccelPass           / http://srv002/ [MC=30,MW=100,PH]
</VirtualHost>

UseCanonicalName Off

На роутере прописан НАТ на обращение к реальным серверам переход наэти порты и адрес.

при обращении к сайту, если у URL нет завершающего слэша, а обращение происходит ккаталогу бэкенд делает авторедиректс использование заверщающего слэша, а фронтэнд при это добавляет порт в зависимости от его порта на кэширующем сервере, как сделать так, чтобы порт не добавлялся?

Нужно патчить src/mod_accel/accel_http.c, примерно так:

     if (rewrite) {
         char *url, *refresh, *new;

         /* Location */
         if (url = (char *)ap_table_get(r->headers_out, "Location")) {
-            new = (rewrite == 2) ? accel_rewrite_url(a, url):
-                                   accel_rewrite_port(a, url, port);
+            new = (rewrite == 2) ? accel_rewrite_url(a, url): NULL;
+
             if (new)
                 ap_table_setn(r->headers_out, "Location", new);
         }

         /* Refresh */
         if ((refresh = (char *)ap_table_get(r->headers_out, "Refresh"))
             && (url = strstr(refresh, "url=")))
         {
-            new = (rewrite == 2) ? accel_rewrite_url(a, url + 4):
-                                   accel_rewrite_port(a, url + 4, port);
+            new = (rewrite == 2) ? accel_rewrite_url(a, url + 4): NULL;
+
             if (new)
                 ap_table_setn(r->headers_out, "Refresh",
                               ap_pstrcat(r->pool,
                                          ap_pstrndup(r->pool,
                                                  refresh, url + 4 - refresh ),
                                          new, NULL));
         }
     }



Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.