Python nginx能否转发到挂架,忽略响应,返回备用响应?

Python nginx能否转发到挂架,忽略响应,返回备用响应?,python,web-applications,nginx,pylons,Python,Web Applications,Nginx,Pylons,我的一个URL用于跟踪cookie。在基本配置中,pylons控制器解析查询字符串,执行DB查询,并相应地设置cookie 我想搬到nginx。我想知道这是否可能: nginx从memcached获取cookie的值 nginx写入头并为静态文件提供服务 nginx返回响应 nginx将请求传递给挂架进行日志记录 nginx忽略了挂架响应 这可能有什么变化吗?我试图将请求与登录pylons控制器的延迟分离,因为响应最终是一个带有特定cookie头的静态文件 谢谢 您描述的场景几乎不可能“按原样”

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

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

  • nginx从memcached获取cookie的值
  • nginx写入头并为静态文件提供服务
  • nginx返回响应
  • nginx将请求传递给挂架进行日志记录
  • nginx忽略了挂架响应
  • 这可能有什么变化吗?我试图将请求与登录pylons控制器的延迟分离,因为响应最终是一个带有特定cookie头的静态文件


    谢谢

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

    • 据我所知,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):

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

    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;
    }
    
    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;
    }