avatar
+0.42
0.000
dba
dba
location / {
#by Genius_A
			error_page 418 = @fallback;
		        if ($cookie_key != "") {
                        return 418;
		        }
                        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.228.153.250:8080;
			proxy_redirect http://11.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;
                }


При этом кешируются все как и раньше. При проверке:

			error_page 418 = @fallback;
		        if ($cookie_key = "") {
                        return 418;
		        }

передается сразу на @fallback.

Хмм у меня последняя версия Livestreet 1.0.3 и в config.php нету параметра $config['security']['user_session_key']. Хотя после проставления этого параметра ошибка моя всё равно присуствует.
dba
dba
а у Вас какая версия nginx?
dba
dba
Хмм кстати, а у Вас какая версия nginx?
nginx -V
nginx version: nginx/0.8.54
TLS SNI support enabled
configure arguments: --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/build/buildd/nginx-0.8.54/debian/modules/nginx-upstream-fair


У меня, например, вот эта деректива не срабатывает disable_symlinks if_not_owner from=$root_path;
dba
dba
На сайтах Altocms использовал эту проверку, но работает, тончее не работает аналогично Livestreet:
proxy_cache_bypass $cookie_user_key;
proxy_no_cache $cookie_user_key;
dba
dba
При чем сам кэш имеет такой вид: brouhaha.ru/cache.txt
dba
dba
а) У меня сделано: /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)/».

Конфиг nginx.conf brouhaha.ru/nginx.conf_my
Сам сайт brouhaha.ru/

Что делать ума не приложу…

PS: Genius_A благодарю за помощь.
dba
dba
<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 как у Вас в примере, то кэш будет писаться в виде:
<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>

При этом 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, что там мало данных.
dba
dba
У нас с вами один и тот же шаблон Fortune.

логин по пути site.ru/login/
регистрация по пути site.ru/registration/

правда если на Вашем сайте кликнуть по «создать», войти или зарегистрироваться, то перенаправляет на отдельную страницу sla.kiev.ua/login/ или sla.kiev.ua/registration/, а у меня выскакивает окно на js, где на выбор «Войти», «Регистрация» или «Восстановление пароля».

сайт я Вам в личку скинул.
dba
dba
к сожалению не смог отредактировать, верная ссылка pastebin.com/yRDiyctL
dba
dba
Я пытался понять, что откуда берется, часть понял, а часть нет(

proxy_cache_bypass $cookie_key;
proxy_no_cache $cookie_key;

Как я понимаю, это всегда такие значения для Livestreet.

pastebin.com/ySPvmt4X
Вот мой полный nginx.conf

При этом скачал плагин Firebug и там нет переменной key среди cookie, посмотрел в DOM, есть только LIVESTREET_SECURITY_KEY.
dba
dba
Все работает безупречно, с учетом правок в /classes/actions/ActionRegistration.class.php $this->User_Authorization($oUser, false); на $this->User_Authorization($oUser, true);

Но, получается так, что, когда пользователь логинится ему подставляется кэш страницы как будто он не залогинен, хотя по факту, если допустим для админа написать site.ru/admin админка сайта открывается. Правда это для LS, но думаю, что это не связано с CMS. Также если «погулять» по тем страницам, на которых другие пользователи не заходили, кэш страницы отдается уже с залогиненным пользователем.