ruby-on-rails – Nginx在60秒后完全超时
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ruby-on-rails – Nginx在60秒后完全超时,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1600字,纯文字阅读大概需要3分钟。
内容图文
![ruby-on-rails – Nginx在60秒后完全超时](/upload/InfoBanner/zyjiaocheng/956/cbd36847025146d189877593ce94c3c9.jpg)
我在后端(与Puma的Rails)绑定到unix套接字的app服务器
这是nginx配置的相关部分
location /live/ {
proxy_pass http://app; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_set_header Connection 'Upgrade';
proxy_http_version 1.1;
chunked_transfer_encoding off;
send_timeout 300;
proxy_send_timeout 300;
keepalive_timeout 7200;
}
SSE事件来自/ live /,因此我调整了ngix配置来处理对此路由的所有请求.
问题是连接在60秒后完全关闭.这是我在响应头中看到的内容
Cache-Control:no-cache
Connection:keep-alive
Content-Type:text/event-stream
Date:Mon, 04 Nov 2013 13:41:52 GMT
Server:nginx
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
X-Request-Id:7065a7bc-3450-4fe2-b60c-33dfa8d41951
X-Runtime:0.010852
X-UA-Compatible:chrome=1
X-XSS-Protection:1; mode=block
所以似乎nginx将初始响应设置为close.为什么keepalive_timeout在这里不起作用.
在nginx error.log中我看到了
2013/11/04 13:42:52 [error] 3689#0: *9 upstream timed out (110: Connection timed out) while reading upstream, client: ......., server: myapp.com, request: "GET /live/events HTTP/1.1", upstream: "http://unix:/home/ubuntu/myapp/shared/sockets/puma.sock:/live/events", host: "myapp.com"
解决方法:
为了防止其他人遇到Nginx Puma Rails的Timeout错误,Nginx中的以下配置应该将超时时间增加到605秒(10分5秒):
server {
# ... here goes your proxy configuration
# Avoid 504 HTTP Timeout Errors
proxy_connect_timeout 605;
proxy_send_timeout 605;
proxy_read_timeout 605;
send_timeout 605;
keepalive_timeout 605;
}
内容总结
以上是互联网集市为您收集整理的ruby-on-rails – Nginx在60秒后完全超时全部内容,希望文章能够帮你解决ruby-on-rails – Nginx在60秒后完全超时所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。