Python nginx能否转发到挂架,忽略响应,返回备用响应?
我的一个URL用于跟踪cookie。在基本配置中,pylons控制器解析查询字符串,执行DB查询,并相应地设置cookie 我想搬到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头的静态文件 谢谢 您描述的场景几乎不可能“按原样”
谢谢 您描述的场景几乎不可能“按原样”。问题:
- 据我所知,Nginx无法从memcached读取cookie。它只能通过响应体
- Nginx确实可以调用“post_action”,但此功能处于测试阶段,您最好避免使用它
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;
}