nginx:连接到上游时没有活动的上游


15

在站点页面之间以及在主页上的某些时间之间切换时显示502错误的网关错误,但对于主页上的第一个请求却没有,只有在另一个页面重定向到它时才显示。它发生在一些javascript文件中

在两个上游php1 php2上配置的负载均衡都是apache服务器。

当我检查错误日志时,我喜欢:

no live upstreams while connecting to upstream

[error] 27212#0: *314 no live upstreams while connecting to   upstream, client: ip_address , server: example.com, request: "GET / HTTP/1.1", upstream: "http://example.com", host: "example.com", referrer: "http://example.com/mypages/"

这是负载平衡服务器配置

  upstream example.com  {
    #  ip_hash;
      server php01 max_fails=3 fail_timeout=15s;
      server php02 max_fails=3 fail_timeout=15s;
    }

    server {
      listen IP:80;
      server_name example.com;
      access_log /var/log/nginx/example.com.access;
      error_log /var/log/nginx/example.com.error error;

     location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass  http://$server_name/$uri;
        proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
        proxy_cache_bypass $http_pragma $http_authorization;
        proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
        proxy_no_cache $http_pragma $http_authorization;
      }

    }

我搜索了几个小时,没有任何帮助发现我的信息流已经打开,并且它们没有问题。


您的上游服务器(php01,php02)是否正常工作?您可以从ngnix机器远程登录到他们吗?
neutrinus 2014年

它们已连接。
Mohammad Jolani 2014年

您是否检查上游服务器是否有足够的进程在运行以处理流量?您应该检查上游服务器日志是否由于某种原因拒绝了请求。
Tero Kilkanen 2014年

我做到了,上游错误日志也没有问题,并且网关错误的请求也没有访问日志。
Mohammad Jolani 2014年

您找到解决此问题的方法了吗?
flickerfly 2015年

Answers:


4

这不是Nginx的问题,而是您的PHP后端未及时响应的问题。您可以向Nginx添加日志记录以帮助确认这一点

作为第二参考,您可以top在服务器上手动检查PHP是否在一段时间内猛击CPU,这是响应缓慢的另一个指标。

如果您对PHP的响应非常慢而感到满意,则可以要求Nginx等待更长的时间才能放弃:

 # Wait 5 minutes before giving up on the backend!
 proxy_read_timeout 5m; 

通过检查带有上面链接的时间信息的日志,您应该能够找出PHP处理缓慢的请求。

为了缩小问题的范围,请将这些请求直接发送到PHP后端。

根据发生的情况,您也许还可以在Nginx中启用某些请求的缓存,从而避免一些缓慢的请求。


0

不知道是否完全一样,但是对我有用的是在服务器名称的末尾添加max_fails = 0

上游sm_url {服务器LOAD_BALANCER_DOMAIN_NAME:max_fails = 0; }


-3

将上游重命名为“ up_example.com”并进行更改

proxy_pass  http://$server_name/$uri;

proxy_pass  http://up_$server_name$uri;

尽管非常规,但使用时没有技术问题$server_name。如果这是问题所在,我认为他会一直有问题,而不仅仅是报告中的问题。
Mark Stosberg '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.