1

我在 nodejs express 应用程序前使用 nginx 1.5 作为代理,主要用于提供静态内容。我已成功将 http 版本升级到 1.1 以启用 websocket 传输。

我现在想通过添加反向代理缓存来提高性能。我有这个,但现在 websockets 似乎被缓存了?有没有一种简单的方法来配置 nginx 以缓存除 websockets 之外的所有内容,特别是使用 socket.io,包括长轮询后备等。

我的配置看起来有点像这样;

proxy_cache_path  /data/nginx/cache  levels=1:2    keys_zone=STATIC:10m inactive=24h  max_size=1g;

# express/socket.io app
upstream app {
    server 127.0.0.1:3000;
}

# the nginx server instance
server {
    listen 0.0.0.0:80;
    server_name server-name.com;

    location / {
      #access_log off;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://app/;
      proxy_redirect off;

      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      proxy_cache STATIC;
      proxy_cache_valid 200 1d;
      proxy_cache_use_stale  error timeout invalid_header updating http_500 http_502 http_503 http_504;
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|flv|swf|html|htm|mp3|webm|ogv|ogg|mp3|m4a)$ {
        root   /var/www/server-name.com/public;
    }
}
4

1 回答 1

3

我不太明白你的意思是:

但现在 websockets 似乎被缓存了?

但这可能会有所帮助:

proxy_cache_bypass $http_upgrade;

参考: http: //nginx.org/r/proxy_cache_bypass

于 2013-05-29T19:59:17.147 回答