我正在通过嵌入 img制作一个高负荷的网络统计系统.标记到网站.我想做的是: nginx从某个主机获取图像请求它给出了从文件系统托管小1px静态图像的答案此时它以某种方式将请求的标头传输到应用程序并关闭与主机的...
我正在通过嵌入< img>制作一个高负荷的网络统计系统.标记到网站.我想做的是:
> nginx从某个主机获取图像请求
>它给出了从文件系统托管小1px静态图像的答案
>此时它以某种方式将请求的标头传输到应用程序并关闭与主机的连接
我正在使用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;
}
}
绝对是一个有趣的挑战.
沃梦达教程
本文标题为:ruby – 如何让nginx返回静态响应并向应用程序发送请求标头?
基础教程推荐
猜你喜欢
- R语言基于Keras的MLP神经网络及环境搭建 2022-12-10
- R包ggtreeExtra绘制进化树 2022-12-14
- R语言-如何将科学计数法表示的数字转化为文本 2022-11-23
- swift 字符串String的使用方法 2023-07-05
- ruby-on-rails-使用Nginx的Rails的多阶段环境 2023-09-21
- R语言数可视化Split violin plot小提琴图绘制方法 2022-12-10
- UEFI开发基础HII代码示例 2023-07-07
- asm基础——汇编指令之in/out指令 2023-07-06
- Go web部署报错panic: listen tcp xxxxxxx:8090: bind: cannot assign requested address 2023-09-05
- swift版webview加载网页进度条效果 2023-07-05