Nginx/Redis 및 URL의 처리 매개 변수를 처리합니다
문제
내 웹 사이트에서 nginx와 redis를 사용하고 있습니다. 내 사이트의 여러 항목의 경우 사용자가 항목을 클릭하면 요청 된 콘텐츠 사용자에게 서비스를 제공하는 것 외에 사용자 사용 통계를 수집 할 수 있도록 URL에 매개 변수를 추가하고 싶습니다. 백그라운드 응용 프로그램에 도달하지 않고 Nginx의 Redis 에서이 통계를 캡처하는 방법에 대한 방법을 찾고 있습니다.
예를 들어, 내 페이지에 여러 행의 테이블이 있다고 가정하고 각 테이블이 항목을 행/열 형식으로 유지한다고 가정합니다. 따라서 {table : 2, row : 1, column : 3}의 항목의 경우 실제 URL이 www.mysite.com/news/dodi 인 경우 URL을 포함하고 싶습니다 : www.mysite.com/news /dodi/day = 29? table = 2 & row = 1 & column = 3. 사용자가 클릭하면 Nginx가 Redis를 때리면 컨텐츠를 가져오고 적절한 통계를 업데이트합니다 (여기에서는 29 일, 표 2, ...).
백그라운드 앱을 치지 않고 어떻게이를 달성하는지에 대한 제안이 있습니까?
해결책
추적 매개 변수의 경우이 유형의 작업을 사용자 요청 범위를 벗어나십시오. 통계 추적에 대한 대기 시간 페널티를 지불하지 마십시오. CRON Access.Log 및 업데이트 REDIS 및/또는 데이터베이스에서 매개 변수를 추출하는 스크립트.
캐싱 컨텐츠 측면에서, 최근에 출시 된 NGINX REDIS 모듈이 MemCached 모듈과 거의 같은 방식으로 작동합니다. Get and Select 만 현재 구현됩니다. 응용 프로그램이 캐시를 채우고 있다고 가정합니다.
http://wiki.nginx.org/nginx3rdpartymodules#http_redis_module
샘플 nginx.conf :
http
{
...
server {
location / {
set $redis_db "0";
set $redis_key "$uri?$args";
redis_pass 127.0.0.1:6379;
error_page 404 502 504 = @fallback;
}
location @fallback {
proxy_pass backed;
}
}
}