amazon-web-services - 连接()失败(113 : Host is unreachable) while connecting to upstream nginx for aws

标签 amazon-web-services nginx

我知道这个问题被问过多次并且与 aws 无关。

2020/07/29 10:23:17 [error] 6#6: *37749 connect() failed (113: Host is unreachable) while connecting to upstream, client: 
我在 aws 云中部署了 nginx 时遇到了这个问题。
本地配置
location /test {
         proxy_pass http://test-service;
         proxy_set_header HOST $host;
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         }
像下面这样的上游部分
upstream test-service {
    server test-service.internal:38102;
    keepalive 10;
}
这里test-service.internal是我的 route53 托管区域条目,它指向一些 internal application load balancer的。
当我部署/重新启动 nginx 服务器时,它运行良好,但几天后(大约两/三天)它只会卡在代理传递中。当我加载 html 内容时,它运行良好,但代理传递调用卡住了。
任何解决方案都会有帮助吗?
谢谢。

最佳答案

经过长时间的调试,我们发现nginx会缓存test-service.internal ips。 aws 会改变它的内部负载均衡器的 ip。
所以nginx缓存的ips不再存在。所以我们需要提供新的ips。
解决方案:
nginx 已经提供 resolver指示

location /test {
           resolver 10.0.0.2 127.0.0.1 valid=30s;
           set $backend_servers test-service.internal;
           proxy_pass http://$backend_servers:38102;
         #proxy_pass http://test-service;
         proxy_set_header HOST $host;
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_http_version 1.1;
           proxy_set_header Connection "";
         }
我们改变了两件事。
  • 添加了解析器。
  • 移除上游(nginx 不支持解析器。nginx-plus 支持带有解析器的上游)
    resolver 10.0.0.2 127.0.0.1 valid=30s;    
    set $backend_servers test-service.internal;
    proxy_pass http://$backend_servers:38102;
    

  • 现在我们正在使用 aws dns 服务器 10.0.0.2解决 test-service.internal每 30 秒后

    关于amazon-web-services - 连接()失败(113 : Host is unreachable) while connecting to upstream nginx for aws,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63154521/

    相关文章:

    linux - ElasticBeanstalk - 将 ec2-user 添加到另一个组

    nginx - 我应该在Kubernetes集群中使用反向代理(例如NGINX)吗?

    docker - 如何将位置映射到 Nginx 中的上游服务器?

    php - Nginx 找不到文件但从 mysql 中获取信息

    mysql - RDS 实例上的慢 Mysql 存储过程

    amazon-web-services - 如何优雅地取消 cdk 部署?

    amazon-web-services - 如何打印/调试数据源资源的所有可用字段?

    amazon-web-services - 从 'aws ecr get-login' 获取结果的问题

    linux - 无法启动 php-fpm - "cannot get uid for user ' apache'”

    ubuntu - HTTP 状态 500 - 无法创建目录/var/lib/tomcat7/webapps/ROOT/WEB-INF/lucee