背景
最终用户发送的 HTTP 请求将按www.stuff.com/things
如下方式处理:
- 由应用程序负载均衡器(公共负载均衡器)接收,该负载均衡到 NGINX 反向代理(我们称之为安全代理)。
- 安全代理将请求路由到私有应用程序负载均衡器。
- 私有负载均衡器根据 URL 路由流量。如果 URL 正确,
/things/...
则请求被路由到另一个 NGINX 代理。 - 第二个 NGINX 代理(我们称之为代理
things
)将所有请求路由到经典负载均衡器。 - 经典负载均衡器监听端口 80 和 50000,并将请求平衡到托管
things
应用程序的实例。
总结一下:我有公共负载均衡器, 这安全代理, 这私有负载均衡器, 这things
代理人以及经典负载均衡器。
问题
当用户尝试访问时www.stuff.com/things
,他们会等待,等待,最终收到 HTTP 504:网关超时。或者,页面立即加载。或者,某些元素加载迅速,而其他元素则挂起。
调试
我尝试从链中的多个地方发出请求:
curl
这经典负载均衡器,响应是瞬间curl
这things
代理人,响应是瞬间curl
这私有负载均衡器,响应是瞬间curl
这安全代理,响应是瞬间curl
这公共负载均衡器,响应是慢啊……除非快速地。
也许我需要重新配置我的代理?
代理配置
代理things
配置如下:
events {
worker_connections 1024;
}
http {
server {
location ^~ /proxycheck {
return 200 'available';
add_header Content-Type text/plain;
}
location / {
proxy_pass ${PROXY_ADDRESS};
}
}
}
这安全代理配置如下:
events {
worker_connections 1024;
}
http {
server {
location ^~ /proxycheck {
return 200 'available';
add_header Content-Type text/plain;
}
location / {
proxy_pass ${PROXY_ADDRESS};
proxy_read_timeout 90;
proxy_redirect default;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
将来,安全代理将检查证书。在此之前,我遇到了另一个问题。
有什么建议么?
答案1
看起来这一定是 AWS 的一个暂时性问题(与广为人知的胖手指事件有关),因为自从发布这个问题以来我一直无法复制它。