LINUX.ORG.RU
решено ФорумAdmin

Apache+Nginx - проблема с cookie


0

1

С целью разгрузки сервера (под управлением CentOS 5.6) - была установлена связка Apache 2.2.19 (backend) + Nginx 1.0.5 (frontend).
Сайты, размещенные на данном сервере (после установки вышеуказанной связки), — заработали (время ответа - сократилось, нагрузка на проц - уменьшилась), однако не обошлось без «ложки дегтя».
Так, сайт, использующий cookie для долговременного хранения параметров сессии пользователя (до следующего посещения) — частично утратил возможность их установки в новое значение (существующее значение — доступно только для считывания) (скрипты сайта не изменялись).
Частичность утраты возможности установки новых значений сессии в cookie - состоит в том, что если пользователь использует Internet Explorer или Chrome — тогда скрипт сайта может изменить cookie в заданное значение (как и должно быть - точно так же, как сайт работал до изменения настроек веб-сервера), а если пользователь использует Firefox либо Opera — тогда нет.

На одном из форумов встретилось упоминание о том, что данная проблема может быть решена установкой nginx из исходников — установил из исходников — без толку.
Nginx был сконфигурирован следующей строкой:
./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/

Подскажите, что нужно изменить/указать/добавить, что бы восстановить возможность изменения значений в cookie?

Ниже привожу выдержку из конфигурации NGINX:
server {
listen 192.168.1.1:80;
server_name domain.sitename.ru;
access_log off;

location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
log_not_found off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 10m;
}
}

П.С. Пробовал указывать в разделе «location» директивы «proxy_pass_header Cookie» и «proxy_pass_header Set-Cookie» - без толку.

Для начала снифером/браузером/etc посмотри на хедеры с nginx и без nginx и их сравни.

true_admin ★★★★★
()
Ответ на: комментарий от anonymous

Ответ для wget -S --spider http://192.168.1.1:80/ :
Включен режим робота. Проверка существования удалённого файла.
--2011-07-27 13:54:31-- http://192.168.1.1/
Устанавливается соединение с 192.168.1.1:80... соединение установлено.
Запрос HTTP послан, ожидается ответ...
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 27 Jul 2011 10:54:32 GMT
Content-Type: text/html; charset=WINDOWS-1251
Connection: keep-alive
X-Powered-By: PHP/5.2.12
Set-Cookie: PHPSESSID=lmd514mg0obq7mnqmnrbsem5h6; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Длина: нет информации [text/html]
Удалённый файл существует и может содержать дополнительные
ссылки, но рекурсия отключена — не загружается.


Ответ для wget -S --spider http://127.0.0.1:8080/ :
Включен режим робота. Проверка существования удалённого файла.
--2011-07-27 13:54:51-- http://127.0.0.1:8080/
Устанавливается соединение с 127.0.0.1:8080... соединение установлено.
Запрос HTTP послан, ожидается ответ...
HTTP/1.1 200 OK
Date: Wed, 27 Jul 2011 10:54:51 GMT
Server: Apache
X-Powered-By: PHP/5.2.12
Set-Cookie: PHPSESSID=5fepnkufinhp5e2qvqnjarni30; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=WINDOWS-1251
Длина: нет информации [text/html]
Удалённый файл существует и может содержать дополнительные
ссылки, но рекурсия отключена — не загружается.

На что обратить внимание?

linux0id
() автор топика
Ответ на: комментарий от true_admin

Вернул конфиги веб-сервера в исходное состояние (оставил только Apache - без NGINX), а проблема - осталась, очень похоже на то, что весь вопрос в скриптах сайта.

True_admin - спасибо.

linux0id
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.