NGINX and wrong memcached output

Jakub lists at
Sun Apr 22 16:48:06 UTC 2012


At first let me tell my application was developped under PHP with
Symfony2, but I guess my problem is about nginx and memcached and not
about PHP. As I can see here is good community about nginx and I will be
glad for any help.

I have problem with nginx and memcached responses such as text/html or
application/json. My idea is:
-First request on nginx server (reverse proxy memcached server)
-Try if I have memcached response (memcached run on same server as
-If not go 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

But for the second request, when NGINX find response in memcached, NGINX
serves totaly wrong.
-------- Headers
Date:Sun, 22 Apr 2012 16:17:15 GMT
-------- Content
xśuÎ1Â0ŕ˙rs+"’UpŇI·ââ)צ$AÄ˙nˇ59¤ßƒďÝ5o ˜zU0‚=uŘZ¨

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
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 ~*
        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_cache             dp-xskrha-static;
        roxy_cache_valid        200  10m;

    # Model api json
    location /model-api {
        default_type          application/json;
        set $memcached_key    $uri;
        error_page            404 =200 @fallback;

    # Dynamic content, all rest uri
    location / {
        default_type            text/html;
        charset                 utf-8;
        set $memcached_key      $uri;
        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_redirect             off;
        proxy_pass                 http://app.dp-xskrha.local:80;

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/;

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
                                         inactive=24h  max_size=1g;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

Thank you very much, for Your response :)


Posted via

More information about the nginx mailing list