ruby – 如何让nginx返回静态响应并向应用程序发送请求标头?
发布时间:2020-12-17 03:13:43 所属栏目:百科 来源:网络整理
导读:我正在通过嵌入 img制作一个高负荷的网络统计系统.标记到网站.我想做的是: nginx从某个主机获取图像请求 它给出了从文件系统托管小1px静态图像的答案 此时它以某种方式将请求的标头传输到应用程序并关闭与主机的连接 我正在使用Ruby,我将制作一个纯机架应用
我正在通过嵌入< img>制作一个高负荷的网络统计系统.标记到网站.我想做的是:
> nginx从某个主机获取图像请求 我正在使用Ruby,我将制作一个纯机架应用程序来获取标题并将它们放入队列以进行进一步计算. 我无法解决的问题是,如何配置sphinx为Rack应用程序提供标头,并返回静态图像作为回复而无需等待Rack应用程序的响应? 此外,如果有更常见的Ruby解决方案,则不需要Rack. 解决方法
一个简单的选择是在继续后端进程的同时尽快终止客户端连接.
server { location /test { # map 402 error to backend named location error_page 402 = @backend; # pass request to backend return 402; } location @backend { # close client connection after 1 second # Not bothering with sending gif send_timeout 1; # Pass the request to the backend. proxy_pass http://127.0.0.1:8080; } } 上面的选项虽然简单,但可能导致客户端在断开连接时收到错误消息. ngx.say指令将确保发送“200 OK”标头,并且由于它是异步调用,因此不会保留.这需要ngx_lua模块. server { location /test { content_by_lua ' -- send a dot to the user and transfer request to backend -- ngx.say is an async call so processing continues after without waiting ngx.say(".") res = ngx.location.capture("/backend") '; } location /backend { # named locations not allowed for ngx.location.capture # needs "internal" if not to be public internal; # Pass the request to the backend. proxy_pass http://127.0.0.1:8080; } } 一个更简洁的Lua选项: server { location /test { rewrite_by_lua ' -- send a dot to the user ngx.say(".") -- exit rewrite_by_lua and continue the normal event loop ngx.exit(ngx.OK) '; proxy_pass http://127.0.0.1:8080; } } 绝对是一个有趣的挑战. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |