Nginx and memcached response

Bertrand Paquet bpaquet at octo.com
Sun Apr 22 17:17:29 UTC 2012


Hi,

Does your application server fill memcached correctly ? May be a binary /
encoding problem when connecting to memcached. Or the content is stored
gzipped ?

Regards

Bertrand


On Sun, Apr 22, 2012 at 19:02, Jakub Škrha <serga at seznam.cz> wrote:

> **
> Hi,
>
> I have problem with nginx and memcached responses such as text/html or
> application/json and I will be glad for any help. Thanks.
>
> My idea is:
> -First request on nginx server (reverse proxy memcached server)
> -Try if I have memcached response (memcached run on same server as
> nginx)
> -If not pass request to application server
> -Application server makes response
> -Stores response in to memcached
> -And for next same request nginx hit response from memcached and return
> to client.
>
> But the problem is, when the application server stores response to
> memcached (data in memcached are stored good and corectly) and NGINX hit
> the request in memcached, but return totaly wrong hashed content.
>
> For example:
> First request, ngingx didnt find response in memcached, pass to
> application server, and here is response ... good and correct JSON.
> ------- Headers
> HTTP/1.0 200 OK
> Date: Sun, 22 Apr 2012 16:13:58 GMT
> Server: Apache/2.2.16 (Debian)
> X-Powered-By: PHP/5.3.3-7+squeeze8
> cache-control: no-cache
> x-debug-token: 4f942e4dee10b
> Content-Length: 476
> Connection: close
> Content-Type: application/json
> -------- Content
>
> [{"id":10,"title":"Cinema","url":"cinema","articles":null},{"id":2,"title":"Computers","url":"computer","articles":null},{"id":8,"title":"Foto","url":"foto","articles":null},{"id":12,"title":"Literature","url":"literature","articles":null},{"id":4,"title":"Music","url":"music","articles":null},{"id":18,"title":"Society","url":"society","articles":null},{"id":16,"title":"Sport","url":"sport","articles":null},{"id":6,"title":"Travelling","url":"travelling","articles":null}]
>
> But for the second request, when NGINX find response in memcached, NGINX
> serves response totaly wrong.
> -------- Headers
> Connection:keep-alive
> Content-Length:164
> Content-Type:application/json
> Date:Sun, 22 Apr 2012 16:17:15 GMT
> Server:nginx/0.7.67
> -------- Content
> xśuÎ1Â0ŕ˙rs+"’UpŇI·ââ)צ$AÄ˙nˇ59¤ßƒďÝ5o ˜zU 0‚ =uŘZ¨
> ˘űE„cÓ%ćO5ʵ‚ľí“`ˆĹN͢Ţ}đâ3ĽŹaŐę摆y+)`¶¬«ů…M8ĄH.ŰvJ‡Ő»gďĺ•eĚyÁn•í}
> "§4ď»űDfęŮŠ®ţ®_ß
> ť
>
> With text/html I have exactly the same problem. Do you have anybody any
> idea plese? Here is my nginx configuration:
>
> # nginx virtual host from sites-available linked to sites-enabled
> server {
>     listen          80;
>     server_name     dp-xskrha.local;
>     access_log      /var/log/nginx/dp-xskrha/access.log;
>     error_log       /var/log/nginx/dp-xskrha/error.log;
>
>     # Static content, images, css, js
>     location ~*
> ^.+\.(jpe?g|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|avi|mp3)$
>
> {
>         proxy_redirect          off;
>         proxy_pass              http://app.dp-xskrha.local:80;
>         proxy_set_header        Host              $host;
>         proxy_set_header        X-Real-IP         $remote_addr;
>         proxy_set_header        X-Forwarded-For
> $proxy_add_x_forwarded_for;
>         proxy_cache             dp-xskrha-static;
>         roxy_cache_valid        200  10m;
>     }
>
>     # Model api json
>     location /model-api {
>         default_type             application/json;
>         set $memcached_key       $uri;
>         memcached_pass           127.0.0.1:11211;
>         error_page               404 =200 @fallback;
>     }
>
>     # Dynamic content, all rest uri
>     location / {
>         default_type            text/html;
>         charset                 utf-8;
>         set $memcached_key      $uri;
>         memcached_pass          127.0.0.1:11211;
>         error_page              404 =200 @fallback;
>       }
>
>     # Memcached fallback for proxy pass
>     location @fallback {
>         proxy_set_header           Host             $host;
>         proxy_set_header           X-Real-IP        $remote_addr;
>         proxy_set_header           X-Forwarded-For
> $proxy_add_x_forwarded_for;
>         proxy_redirect             off;
>         proxy_pass                 http://app.dp-xskrha.local:80;
>       }
> }
>
>
> #nginx.conf
> user www-data;
> worker_processes  1;
>
> error_log  /var/log/nginx/error.log;
> pid        /var/run/nginx.pid;
>
> events {
>     worker_connections  1024;
>     multi_accept on;
> }
>
> http {
>     include       /etc/nginx/mime.types;
>
>     access_log    /var/log/nginx/access.log;
>
>     sendfile        on;
>     tcp_nopush     on;
>
>     #keepalive_timeout  0;
>     keepalive_timeout  65;
>     tcp_nodelay        on;
>
>     gzip  on;
>     gzip_disable "MSIE [1-6]\.(?!.*SV1)";
>
>     # proxy settings
>     proxy_cache_path  /data/nginx/cache  levels=1:2
> keys_zone=dp-xskrha-static:10m
>                                          inactive=24h  max_size=1g;
>
>     include /etc/nginx/conf.d/*.conf;
>     include /etc/nginx/sites-enabled/*;
> }
>
> Thank you very much, for Your response :)
>
> Jacob
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20120422/7414b3aa/attachment-0001.html>


More information about the nginx mailing list