четверг, 25 августа 2011 г.

apache+nginx: убираем порт из адреса при редиректе

Столкнулся на одном проекте с багой: после 301 редиректа адрес становился вида site.ru:8080/newaddr

Оказалось, в данном случае в конфиге был прописан
UseCanonicalName On

Закомментировал - заработало как надо.
Если что - есть вариант прописать в конфиге апача после VirtualHost
Port 80

"Появление порта 8080 в адреса вызвано работой модуля Apache mod_dir. Правильное решение проблемы - добавление Port 80 в конфигурацию Apache.
Установка же header в nginx не всегда решает проблему - некоторые сайты генерируют адрес с использованием директивы Port, которая, если её не выставить, остаётся 8080."
http://forum.nic.ru/archive/index.php/t-197.html

ЗЫ
Не забываем проверить и остальные части конфигов, они такие:
nginx:
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
#proxy_redirect http://${SITENAME}:${PORT}/ http://${SITENAME}/;
...

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

apache - mod_rpaf:
LoadModule rpaf_module libexec/apache22/mod_rpaf.so
RPAFproxy_ips 127.0.0.1 1.2.3.4
RPAFEnable On
RPAFheader X-Forwarded-For
#RPAFsethostname On

Не могу упомянуть занятную статью
http://greenmice.info/ru/node/116

Комментариев нет:

Отправить комментарий