Не работает предварительный просмотр, HTTP_X_FORWARDED_FOR, nginx

Автор saygak, 06 мая 2011, 11:47:28

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

saygak

В какой-то момент мой сайт с форумом стал много потре[censored] ресурсов хостера, на что тот предложил поставить nginx. Тот действительно сделал свое дело (помимо того что я в нем запретил ip которые ддосили сайт), и нагрузка на ресурсы сильно упала. Однако возникли настройки с реальными IP адресами пользователей, теперь они лежат в директиве $_SERVER['HTTP_X_FORWARDED_FOR'], а не в $_SERVER['REMOTE_ADDR'].
Форум прекратил нормально отображать ip пользователей, неправильно вел статистику текущих посещений, в результате я поменял директивы с REMOTE_ADDR на HTTP_X_FORWARDED_FOR в трех файлах ядра SMF, а именно в файлах Load.php, QueryString.php и SSI.php.

Статистика заработала, все прекрасно, кроме того что перестал отображаться предпросмотр сообщения в развернутой форме ввода сообщения. Другими словами, при вводе текста в форму быстрого ответа и нажав "предварительный просмотр" правильно открывается предварительный просмотр и полная форма отправки сообщения. Однако, если в полной форме ответа нажать кнопку "Предварительный просмотр", то предварительный просмотр сворачивается и отображается пустым. И если попробовать опубликовать свое сообщение после нажатия предв. просмотра в расширенном окне ввода сообщений, возникает предупреждение, что пока выписали ответ, в теме появилось 25 новых сообщений. Хотя в данной теме всего 25 сообщений, и они были еще до того как я начал писать ответ.

В файле Post.php нашел этому предупреждению текст:
$newReplies = $context['num_replies'] > $_REQUEST['num_replies'] ? $context['num_replies'] - $_REQUEST['num_replies'] : 0;


Т.е. получается переменная $_REQUEST['num_replies'] = 0. Значит с переадресациями IP адресов $_REQUEST['num_replies'] где-то неверно заполняется.
Вопрос к гуру, почему не показывается предварительный просмотр из развернутой формы ввода ответа? Предупреждение о новых сообщениях в данной теме может быть ключом к решению.

Joomla! 1.0.15, SMF 1.1.4, мост Joomlahacks.

BIOHAZARD

Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

saygak

Спасибо, я прошерстил уже интернет и форум в частности.
На хостинге нет модуля rpaf, но есть realip_module. И он включен. Сам хостер на это говорит что нужно менять директивы REMOTE_ADDR на HTTP_X_FORWARDED_FOR. Хостер NIC.

Решений проблемы не нашел. Может я неправильно ищу? Буду признателен если ткнете в тему где расписано как это решить.

digger®

Цитата: saygak от 06 мая 2011, 13:06:47
Спасибо, я прошерстил уже интернет и форум в частности.
На хостинге нет модуля rpaf, но есть realip_module. И он включен. Сам хостер на это говорит что нужно менять директивы REMOTE_ADDR на HTTP_X_FORWARDED_FOR. Хостер NIC.

Решений проблемы не нашел. Может я неправильно ищу? Буду признателен если ткнете в тему где расписано как это решить.

Правильное решение - это использовать rpaf, а не форум пилить.
И если уж пилить, то один раз сделать в index.php
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
а не ковырять кучу файлов.

saygak

rpaf использовать не могу, хостер его не предоставляет, предлагает только realip_module.