Хмм у меня последняя версия Livestreet 1.0.3 и в config.php нету параметра $config['security']['user_session_key']. Хотя после проставления этого параметра ошибка моя всё равно присуствует.
На сайтах Altocms использовал эту проверку, но работает, тончее не работает аналогично Livestreet:
proxy_cache_bypass $cookie_user_key;
proxy_no_cache $cookie_user_key;
а) У меня сделано: /classes/actions/ActionRegistration.class.php поменять строчку
$this->User_Authorization($oUser, false);
на
$this->User_Authorization($oUser, true);
б) Бьюсь с тестовым сайтом, никак не получается настроить кэширование статики. Огромное благодарю Genius_A за выложенный код и за комментарии в личке. Убрал по его совету классы js-login-form-show и js-registration-form-show. При этом:
1) Попытался зарегистрироваться, и походить по сайту, и разлогиниться. Так все успешно работает. И только один раз на момент от регистрации до выхода в первый раз.
2) Потом попытался без входа под каким-либо пользователем походить по страницам:
«Топики», «Блоги», «Люди», «Активность», «About»
3) Потом попытался снова войти под этим же пользователем, и выйти. При этом после успешного входа, на страницах «Топики», «Блоги», «Активность», «About» видно, что как будто польльзотель не залогинен, а на страницах, где я не был, например топик «Ким Кардашиан и Канье Уэст показали свою любовь к Givenchy в эти выходные!» видно, что я залогинен под пользователем, в моем случае «test», также видно это же и на странице «Люди», так как у нас «location ~* ^/(engine|login|registration|ajax|settings|video|people)/».
Если убирать proxy_ignore_headers «Cache-Control» «Expires» «Set-Cookie»; то все работает при логировании, и последующем выходе. Но, если использовать не только location / а и другие location как у Вас в примере, то кэш будет писаться в виде:
<code>
цpR
Ќ
KEY: GET|||site.ru|/templates/skin/fortune/images/favicon.ico?v1
HTTP/1.1 200 OK
Date: Wed, 30 Oct 2013 11:15:37 GMT
Server: Apache/2.2.17 (Ubuntu)
Last-Modified: Sun, 16 Dec 2012 14:56:32 GMT
ETag: "17c800f3-37e-4d0f978628810"
Accept-Ranges: bytes
Content-Length: 894
Connection: close
Content-Type: image/x-icon
</code>
правда если на Вашем сайте кликнуть по «создать», войти или зарегистрироваться, то перенаправляет на отдельную страницу sla.kiev.ua/login/ или sla.kiev.ua/registration/, а у меня выскакивает окно на js, где на выбор «Войти», «Регистрация» или «Восстановление пароля».
Все работает безупречно, с учетом правок в /classes/actions/ActionRegistration.class.php $this->User_Authorization($oUser, false); на $this->User_Authorization($oUser, true);
Но, получается так, что, когда пользователь логинится ему подставляется кэш страницы как будто он не залогинен, хотя по факту, если допустим для админа написать site.ru/admin админка сайта открывается. Правда это для LS, но думаю, что это не связано с CMS. Также если «погулять» по тем страницам, на которых другие пользователи не заходили, кэш страницы отдается уже с залогиненным пользователем.
При этом кешируются все как и раньше. При проверке:
передается сразу на @fallback.
Хмм у меня последняя версия Livestreet 1.0.3 и в config.php нету параметра $config['security']['user_session_key']. Хотя после проставления этого параметра ошибка моя всё равно присуствует.
У меня, например, вот эта деректива не срабатывает disable_symlinks if_not_owner from=$root_path;
proxy_cache_bypass $cookie_user_key;
proxy_no_cache $cookie_user_key;
$this->User_Authorization($oUser, false);
на
$this->User_Authorization($oUser, true);
б) Бьюсь с тестовым сайтом, никак не получается настроить кэширование статики. Огромное благодарю Genius_A за выложенный код и за комментарии в личке. Убрал по его совету классы js-login-form-show и js-registration-form-show. При этом:
1) Попытался зарегистрироваться, и походить по сайту, и разлогиниться. Так все успешно работает. И только один раз на момент от регистрации до выхода в первый раз.
2) Потом попытался без входа под каким-либо пользователем походить по страницам:
«Топики», «Блоги», «Люди», «Активность», «About»
3) Потом попытался снова войти под этим же пользователем, и выйти. При этом после успешного входа, на страницах «Топики», «Блоги», «Активность», «About» видно, что как будто польльзотель не залогинен, а на страницах, где я не был, например топик «Ким Кардашиан и Канье Уэст показали свою любовь к Givenchy в эти выходные!» видно, что я залогинен под пользователем, в моем случае «test», также видно это же и на странице «Люди», так как у нас «location ~* ^/(engine|login|registration|ajax|settings|video|people)/».
Конфиг nginx.conf brouhaha.ru/nginx.conf_my
Сам сайт brouhaha.ru/
Что делать ума не приложу…
PS: Genius_A благодарю за помощь.
<code> #-------------------------------------------------------------------------- gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 5; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; proxy_cache_path /var/lib/nginx/wholepage levels=1:2 keys_zone=wholepage:50m max_size=1G; proxy_cache_bypass $cookie_key; proxy_no_cache $cookie_key; #-------------------------------------------------------------------------- </code><code> server { server_name site.ru www.site.ru; listen 11.111.111.250; set $root_path /var/www/path/data/www/site.ru; gzip_min_length 1000; location / { #by Genius_A proxy_cache wholepage; proxy_cache_valid 200 301 302 50m; proxy_cache_valid 404 50m; proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri"; #proxy_hide_header "Set-Cookie"; # proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie"; proxy_pass http://91.228.153.250:8080; proxy_redirect http://91.228.153.250:8080/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; # proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie"; } } </code>Если убирать proxy_ignore_headers «Cache-Control» «Expires» «Set-Cookie»; то все работает при логировании, и последующем выходе. Но, если использовать не только location / а и другие location как у Вас в примере, то кэш будет писаться в виде:
При этом nginx.conf имеет такой вид:
<code> #-------------------------------------------------------------------------- server { server_name site.ru www.site.ru; listen 11.111.111.250; set $root_path /var/www/path/data/www/site.ru; gzip_min_length 1000; error_page 404 = @fallback; location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/|pgadmin/) { proxy_pass http://111.111.111.250:8080; proxy_redirect http://site.ru:8080/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } location / { #by Genius_A proxy_cache wholepage; proxy_cache_valid 200 301 302 50m; proxy_cache_valid 404 50m; proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri"; #proxy_hide_header "Set-Cookie"; # proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie"; proxy_pass http://11.111.111.250:8080; proxy_redirect http://site.ru:8080/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; # proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie"; } location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { root /var/www/alser/data/www/site.ru; access_log /var/www/httpd-logs/site.ru.access.log ; access_log /var/www/nginx-logs/path isp; } location @fallback { proxy_pass http://11.111.111.250:8080; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } } } #-------------------------------------------------------------------------- </code>При этом логирование и разлогирование работает, ну это видно и из кэша wholepage, что там мало данных.
логин по пути site.ru/login/
регистрация по пути site.ru/registration/
правда если на Вашем сайте кликнуть по «создать», войти или зарегистрироваться, то перенаправляет на отдельную страницу sla.kiev.ua/login/ или sla.kiev.ua/registration/, а у меня выскакивает окно на js, где на выбор «Войти», «Регистрация» или «Восстановление пароля».
сайт я Вам в личку скинул.
Как я понимаю, это всегда такие значения для Livestreet.
pastebin.com/ySPvmt4X
Вот мой полный nginx.conf
При этом скачал плагин Firebug и там нет переменной key среди cookie, посмотрел в DOM, есть только LIVESTREET_SECURITY_KEY.
Но, получается так, что, когда пользователь логинится ему подставляется кэш страницы как будто он не залогинен, хотя по факту, если допустим для админа написать site.ru/admin админка сайта открывается. Правда это для LS, но думаю, что это не связано с CMS. Также если «погулять» по тем страницам, на которых другие пользователи не заходили, кэш страницы отдается уже с залогиненным пользователем.