我使用Nginx作为反向代理,接受请求,然后执行proxy_pass从端口8001上运行的上游服务器获取实际的Web应用程序.
如果我去mywebsite.com或做一个wget,我会在60秒后获得504网关超时...但是,如果我加载mywebsite.com:8001,应用程序会按预期加载!
因此有些事情阻止了Nginx与上游服务器的通信.
所有这一切都是在我的托管公司重置机器运行之后开始的,之前没有任何问题.
这是我的vhosts服务器块:
server {
listen 80;
server_name mywebsite.com;
root /home/user/public_html/mywebsite.com/public;
access_log /home/user/public_html/mywebsite.com/log/access.log upstreamlog;
error_log /home/user/public_html/mywebsite.com/log/error.log;
location / {
proxy_pass http://xxx.xxx.xxx.xxx:8001;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Run Code Online (Sandbox Code Playgroud)
我的Nginx错误日志输出:
2014/06/27 13:10:58 [error] 31406#0: *1 upstream timed out (110: Connection timed out) while connecting to upstream, client: xxx.xx.xxx.xxx, server: mywebsite.com, request: "GET / HTTP/1.1", upstream: "http://xxx.xxx.xxx.xxx:8001/", host: "mywebsite.com"
Run Code Online (Sandbox Code Playgroud) 我有一个JSONP WCF端点,我试图找出为什么我得到504错误.
HTTP/1.1 504 Fiddler - 接收失败
内容类型:text/html
连接:close
时间戳:11:45:45:9580
ReadResponse()失败:服务器未返回此请求的响应.
我可以在我的Endpoint内部的任何地方设置一个断点,逐步执行代码,看到它成功收集响应所需的数据,点击最后一行代码,然后一旦我退出WCF调用,我就得到504错误. 这是在上周工作!
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceContract(Name = "NegotiateService", Namespace = "http://rivworks.com/Services/2009/01/15")]
public class NegotiateService //: svcContracts.INegotiateService
{
public NegotiateService() { }
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public dataObjects.NegotiateSetup GetSetup(string method, string jsonInput)
{
dataObjects.NegotiateSetup resultSet = new dataObjects.NegotiateSetup();
using (RivFeedsEntities1 _dbFeed = new FeedStoreReadOnly(AppSettings.FeedAutosEntities_connString, "", "").ReadOnlyEntities())
{
using (RivEntities _dbRiv = new RivWorksStore(AppSettings.RivWorkEntities_connString, "", "").NegotiationEntities())
{
// Deserialize the input and get all the data we need...
Newtonsoft.Json.Linq.JObject o = …Run Code Online (Sandbox Code Playgroud) 我正在使用由我公司的内部云(KVM) - RHEL 6.4配置的VM.
我能够从互联网克隆外部存储库.然而,我无法弄清楚如何在我公司的内部网上克隆内部存储库.
起初我没有设置http_proxy或https_proxy收到此错误:
error: The requested URL returned error: 401 Authorization Required while accessing http://....
Run Code Online (Sandbox Code Playgroud)
设置完成后http_proxy和https_proxy,我现在正在等待约60秒后收到此错误:
error: The requested URL returned error: 504 Gateway Timeout while accessing http://...
Run Code Online (Sandbox Code Playgroud)
我可以从我的笔记本电脑克隆这个repo find,而不是VM
关于我应该在哪里看的任何想法?
谢谢.
这可能是不可能的问题.我已经尝试了一切.我觉得在某个地方的交换机上有一个人,旋转着他的胡子.
问题:
我有Amazon EC2运行应用程序.当只有一个实例且没有负载均衡器时,它可以正常运行.
但是在我的生产环境中,我有两个相同的实例在一个负载均衡器后面运行,在执行某些任务时,比如生成PDF并将其附加到电子邮件的功能,根本不会发生任何事情,以及在网络中使用Google Developer工具时选项卡一旦超时命中(我将其设置为30秒),我会收到错误"504 Gateway Timeout".
我的数据库是外部的,在Amazon RDS上.
我想....如果我可以强制客户端保持连接到他们登录的初始服务器,这个问题就会解决,因为我的理解是当实例1尝试联系到时,504网关超时正在发生instance-2执行任务.
只有在使用负载平衡时才会发生这种情况,但是直接连接到我的两台服务器之一时就不会发生这种情况.
负载均衡器设置:
更多想法:
话虽这么说,我不是用HTTPS测试,而是用普通的HTTP测试.即使我的证书提供商表示,我也不相信SSL已正确设置.我怀疑的原因是当我尝试键入https://app.myapplication.com时,我在Google Developer Tools的Network选项卡中收到错误"(failed)net :: ERR_CONNECTION_CLOSED".但这应该是不适用的,因为即使使用常规HTTP我也遇到了问题.我可以稍后对SSL进行故障排除.
重申一下,我的问题是在使用某些功能时遇到"504 Gateway Timeout"问题,但偶尔也会随机而不是加载页面(但很少).只有在使用负载平衡时才会出现这个问题,但是直接连接到我的两个实例之一时就不会发生这种问题.
我不知道要问哪个问题,因为我已经跟踪了每个文件到T,双重和三重检查了网络上的所有建议而没有.
这些都是超时错误,但是谁在408和504中超时?
根据w3,408被定义为:
客户端在服务器准备等待的时间内未产生请求。客户端可以在以后的任何时间重复请求而无需修改。
... 504是:
该服务器在充当网关或代理服务器时,未收到由URI指定的上游服务器(例如HTTP,FTP,LDAP)或尝试完成访问所需访问的其他一些辅助服务器的及时响应。请求。
那么,如果不是中间服务器,408中的“客户端”是谁?如果是实际的最终用户,那么服务器如何知道在发出请求之前要等待他们的请求?
我一直在使用jquery尝试从API中提取数据.但是我收到504错误.即使我使用邮递员来测试数据,也会发生这种情况.任何人都可以建议我需要做些什么才能解决这个问题?
我们正在RHEL 6.6的Web服务器Varnish + Nginx + FastCGI(php-fpm)上运行以下堆栈
它是一个动态网站,每次都有不同的结果集,并且有大约200万个url被Google索引。
在某些无法解决的页面上,我们间歇性地收到504网关超时。经过一段时间后,给出504的URL可以正常工作。我们从日志中了解到504,但由于它随机出现在任何URL上并在一段时间后起作用,因此我们无法对其进行复制。
我曾与开发人员进行过几次讨论,但是按照他的说法,底层的php脚本几乎什么也不做,它不应该花那么长时间(120秒),但仍然会给504网关超时。
需要确定问题发生的确切位置:
URL在120秒后用504超时
以下是看到的错误:2016/01/04 17:29:20 [错误] 1070#0:* 196333149在连接上游时,上游超时(110:连接超时),客户端:66.249.74.95,服务器:xxxx,请求:“ GET / Some / url HTTP / 1.1”,上游:“ fastcgi://127.0.0.1:9000”,主机:“ example.com”
早期的fastcgi_connect_timeout为150秒-过去63秒,它通常在RHEL 6.6上使用net.ipv4.tcp_syn_retries = 5时给出502状态代码;之后,我们设置net.ipv4.tcp_syn_retries = 6,然后在127秒后开始提供502。
一旦我将fastcgi_connect_timeout设置为120,它就会开始提供504状态代码。我知道具有如此高的值的fastcgi_connect_timeout不好。
需要找出为什么我们确切地得到504(我知道它超时,但是原因未知)。需要找到根本原因永久修复它。
我如何确认问题出在哪里?
这是一些已经定义的超时:
在服务器范围的nginx.conf下:
在特定的vhost.conf下:
使用了不同的超时值,因此我可以弄清楚是哪个触发了确切的超时。
以下是sysctl.conf中的一些设置:
我在nginx上运行带有phusion-passenger的rails3.0.7项目.我正在做ajax,花了大约15分钟来处理.它用firebug跳出一个错误,在拨打ajax 10分钟后说"504 Gateway Time-out".
能不能让我知道如何找到问题.
谢谢,本
当我的php脚本需要运行超过60秒时,我经常遇到504个网关错误.
我在专用服务器上的媒体寺庙.我已经联系了媒体寺,他们一直很有帮助,但他们没有任何建议似乎对我有用,我被告知要编辑这个文件.
/etc/httpd/conf.d/fcgid.conf
我必须在下面
LoadModule fcgid_module modules/mod_fcgid.so
<IfModule mod_fcgid.c>
<IfModule !mod_fastcgi.c>
AddHandler fcgid-script fcg fcgi fpl
</IfModule>
FcgidIPCDir /var/run/mod_fcgid/sock
FcgidProcessTableFile /var/run/mod_fcgid/fcgid_shm
FcgidIdleTimeout 300
FcgidMaxRequestLen 1073741824
FcgidProcessLifeTime 10000
FcgidMaxProcesses 64
FcgidMaxProcessesPerClass 15
FcgidMinProcessesPerClass 0
FcgidConnectTimeout 600
FcgidIOTimeout 600
FcgidInitialEnv RAILS_ENV production
FcgidIdleScanInterval 600
</IfModule>
Run Code Online (Sandbox Code Playgroud)
所以我尽可能多地尝试最大化,测试这个我只是运行下面的功能.
function test504(){
@set_time_limit(0);
sleep(60);
echo "true";
}
Run Code Online (Sandbox Code Playgroud)
睡眠将在60秒以下的任何值上工作,返回true但在60上我得到504网关错误.
我的phpinfo(); 输出
max_execution_time 600
max_input_time 180
Run Code Online (Sandbox Code Playgroud)
我已经看到一些关于增加这个fastcgi_connect_timeout的帖子,但不知道在媒体寺庙哪里可以找到它.
有谁可以帮助谢谢
更新仍然无法修复此问题
在与支持人员聊天后,我被告知需要编辑nginx.conf?并被定向到这篇文章http://blog.secaserver.com/2011/10/nginx-gateway-time-out/
不能罚款托管上的任何值.client_header_timeout client_body_timeout send_timeout fastcgi_read_timeout
我的nginx.conf文件看起来像这样
#error_log /var/log/nginx/error.log info;
#pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http { …Run Code Online (Sandbox Code Playgroud)