【问题标题】:Can nginx forward to Pylons, ignore response, return alternate response?nginx 可以转发到 Pylons,忽略响应,返回替代响应吗?
【发布时间】:2011-01-23 21:24:51
【问题描述】:

我的其中一个 URL 用于跟踪 cookie。在基本配置中,pylons 控制器解析查询字符串,执行数据库查询,并相应地设置 cookie。

我想迁移到 nginx。我想知道这是否可能:

  1. nginx 从 memcached 中获取 cookie 的值
  2. nginx 写入标头并提供静态文件
  3. nginx 返回响应
  4. nginx 将请求传递给 pylons 以进行日志记录
  5. nginx 忽略 pylons 响应

这可能有任何变化吗?我试图将请求与登录 pylons 控制器的延迟分离,因为响应最终是一个带有特定 cookie 标头的静态文件。

谢谢!

【问题讨论】:

    标签: python web-applications nginx pylons


    【解决方案1】:

    您描述的场景几乎不可能“按原样”。问题:

    • 据我所知,Nginx 无法从 memcached 中读取 cookie。它只能传递响应正文。
    • Nginx 确实可以调用“post_action”,但此功能处于测试阶段,您最好避免使用它。

    坦率地说,在实际请求之前,我不完全了解您要向 memcached 写入什么 cookie.. 可能您需要提供更多详细信息。

    不过,Nginx 做了很多对你有用的事情,所以我将概述其中的一些

    Nginx 可以返回一个空的 GIF,它是内置的:

    location /tracking {
      empty_gif;
    }
    

    Nginx 写入日志非常有效,您可以轻松定义格式并将查询参数、请求和响应标头写入日志:

    log_format tracking '$remote_addr "$request" "$http_referer" $arg_param $upstream_x_track_id';
    
    location /tracking {
      access_log /var/log/tracking.log tracking buffer=16k;
      proxy_pass http://upstream;
    }
    

    由于您将使用 memcached,您可能想要缓存响应,这就是 Nginx 可以为您做的(我将展示一个使用代理的示例,但也可以使用 FastCGI):

    proxy_cache_path /var/cache/nginx/cache_tracking keys_zone=tracking:20m;
    
    location /tracking {
      access_log /var/log/tracking.log tracking buffer=16k;
      proxy_cache tracking;
      proxy_cache_valid 200 1m; # Cache responses with code 200 for 1 minute
      proxy_pass http://upstream;
    }
    

    您可以定义自己的缓存键,而不是将其传递给客户端:

    location /tracking {
      access_log /var/log/tracking.log tracking buffer=16k;
      proxy_cache_key $upstream_x_track_id;
      proxy_cache tracking;
      proxy_cache_valid 200 1m; # Cache responses with code 200 for 1 minute
      proxy_hide_header X-Track_Id;
      proxy_pass http://upstream;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-02-16
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 2011-12-17
      • 1970-01-01
      相关资源
      最近更新 更多