Nginx и cookies

php apache nginx Cookies

Что мы имеем:
Связка apache+nginx.
Форум Tinyboard.
Через голый apache авторизация проходит нормально, но в связке с nginx функция mkhash

function mkhash($username, $password, $salt = false) {
global $config;

if (!$salt) {
// create some sort of salt for the hash
$salt = substr(base64_encode(sha1(rand() . time(), true) . $config['cookies']['salt']), 0, 15);

$generated_salt = true;
}

// generate hash (method is not important as long as it's strong)
$hash = substr(base64_encode(md5($username . $config['cookies']['salt'] . sha1($username . $password . $salt . ($config['mod']['lock_ip'] ? $_SERVER['REMOTE_ADDR'] : ''), true), true)), 0, 20);

if (isset($generated_salt))
return array($hash, $salt);
else
return $hash;
}

возвращает не правильное значение и авторизация не проходит. Проверка выглядит так:

if ($cookie[1] !== mkhash($cookie[0], $user['password'], $cookie[2])) {
// Malformed cookies
destroyCookies();
mod_login();
exit;
}

Для того что бы успешно авторизоваться условие не должно выполнится.

Пример возвращаемых значений nginx(авторизоваться не удается):
cookie0: admin
cookie1: Ib37H5U7hCi6Br9M09V+
cookie2: Nn2wUxlnirvgzkn
mkhash: fN1jv3t9ccThde0Kp30h

Пример возвращаемых значений apache(авторизоваться удается):
cookie0: admin
cookie1: SgaMoQ07upLoz9Q7Wdz6
cookie2: Zp6BQ2b20Jsh+1R
mkhash: SgaMoQ07upLoz9Q7Wdz6

Apache висит на 82 порту (собственно если обращатся на этот порт авторизация проходит успешно). Nginx самостоятельно забирает только статику. Смотрю заголовки вроде nginx c куками ничего не делает. В чем может быть причина?
Ответы:
Посмотри, передаётся ли $_SERVER['REMOTE_ADDR'] через nginx.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.