我正在运行 Django、FastCGI 和 Nginx。我正在创建一种 API,有人可以通过 XML 发送一些数据,我将处理这些数据,然后为每个发送过来的节点返回一些状态代码。
问题是,如果我处理 XML 的时间太长,Nginx 会抛出 504 Gateway Time-out ——我认为超过 60 秒。
所以我想设置 Nginx,这样如果任何与位置 /api 匹配的请求都不会超时 120 秒。什么设置将实现这一点。
到目前为止,我所拥有的是:
# Handles all api calls
location ^~ /api/ {
proxy_read_timeout 120;
proxy_connect_timeout 120;
fastcgi_pass 127.0.0.1:8080;
}
编辑:我没有工作:)
代理超时很好,对于代理,而不是 FastCGI...
影响 FastCGI 超时的指令是 client_header_timeout
、client_body_timeout
和 send_timeout
。
编辑:考虑到 nginx wiki 上的内容,send_timeout directive 负责设置响应的一般超时(这有点误导)。对于 FastCGI,有影响 FastCGI process response timeout 的 fastcgi_read_timeout
。
对于将 nginx 与 unicorn 和 rails 一起使用的用户,超时很可能在您的 unicorn.rb
文件中
在 unicorn.rb 中设置一个大的超时时间
timeout 500
如果您仍然遇到问题,请尝试在 nginx 的上游设置 fail_timeout=0 ,看看这是否解决了您的问题。这是出于调试目的,在生产环境中可能很危险。
upstream foo_server {
server 127.0.0.1:3000 fail_timeout=0;
}
在http
nginx 部分 (/etc/nginx/nginx.conf) 添加或修改:
keepalive_timeout 300s
在 server
nginx 部分 (/etc/nginx/sites-available/your-config-file.com) 添加以下行:
client_max_body_size 50M;
fastcgi_buffers 8 1600k;
fastcgi_buffer_size 3200k;
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
在案例 127.0.0.1:9000 (/etc/php/7.X/fpm/pool.d/www.conf) 中的php
文件中修改:
request_terminate_timeout = 300
我希望能帮助你。
如果你使用独角兽。
查看服务器上的 top
。 Unicorn 现在可能正在使用 100% 的 CPU。这个问题有几个原因。
您应该检查您的 HTTP 请求,其中一些可能非常困难。
检查独角兽的版本。可能是您最近更新了它,并且出现了问题。
在这样的服务器代理集中
location / {
proxy_pass http://ip:80;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
}
在这样的服务器 php 设置中
server {
client_body_timeout 120;
location = /index.php {
#include fastcgi.conf; //example
#fastcgi_pass unix:/run/php/php7.3-fpm.sock;//example veriosn
fastcgi_read_timeout 120s;
}
}
不定期副业成功案例分享