Замена cookies domain при проксировании nginx
На днях перед моим воспаленным сознанием в полный рост встала проблема, кратко описанная в заголовке. В рассылке nginx встречались похожие вопросы, но ответом была либо тишина, либо предложение использовать perl, чего делать не хотелось-бы. Помощь пришла, откуда не ждали...
Итак, опишу проблему чуть подробнее:
Есть server1, на котором находится sub.domain.ru. Доступа к нему нет, движок менять и информацию переносить не хочется, а имя второго уровня хочется. На server2 добавляем в nginx domain2.ru и проксируем запросы на sub.domain.ru. Почти все работает, только отданные куки не отдаются при запросе domain2.ru, ибо привязаны к .domain.ru...
Несколько дней небольшой коллективный мозг пытался решить проблему силами nginx, пока мой взгляд не упал на документацию старого индейца apache, у которого есть замечательный модуль mod_proxy, в котором есть не менее замечательная директива ProxyPassReverseCookiePath, предназначенная для замены того самого domain в Cookies.
Конфигурация для nginx:
server {
listen 123.45.67.89:80;
server_name domain2.ru www.domain2.ru;
access_log /var/log/nginx/domain2.access.log; # Нужно для сбора статистики
location / {
proxy_pass http://backend;
}
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js)$ {
proxy_pass http://sub.domain.ru/;
proxy_set_header Host sub.domain.ru.ru;
expires 1h;
}
# Сюда сваливается вывод webalizer
location /stat/ {
root /var/www/domain2.ru;
charset utf8;
}
}
Конфигурация Apache
<VirtualHost 127.0.0.1:8080>
ServerAdmin webmaster@localhost
ServerName domain2.ru
ServerAlias www.domain2.ru
ProxyRequests Off
ProxyVia Off
<Proxy *>
Order deny,allow
Deny from all
Allow from all
</Proxy>
ProxyPass / http://sub.domain.ru/
ProxyPassReverse / http://sub.domain.ru/
ProxyPassReverseCookieDomain .domain.ru domain2.ru
</VirtualHost>Может решение и не самое удачное, зато оно работает, а я отдыхаю (:
PS Зря все забывают про apache, у старого индейца есть еще порох в пороховницах.
- Блог пользователя NeO
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
