Nginx 负载均衡器返回坏网关错误

Nginx 负载均衡器返回坏网关错误

我有三台服务器;两台运行 nginx 的 Web 服务器和一台也运行 nginx 的负载均衡器。我可以在负载均衡器和 Web 服务器之间 ping/telnet/curl,但当我尝试在浏览器中访问负载均衡器 IP 时,出现 502 错误。

这是我的 Web 服务器 nginx 配置文件:

fastcgi_cache_path /home/user/website.com/cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

server {
    server_name 1.1.1.1;
    access_log /home/user/website.com/logs/access.log;
    error_log /home/user/website.com/logs/error.log;
    root /home/user/website.com/public/;
    index index.php;

    set $skip_cache 0; # POST requests and urls with a query string should always go to PHP if ($request_method = POST) { set $skip_cache 1$

    location / {
            try_files $uri $uri/ /index.php?$args;
    }


    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_cache_bypass $skip_cache;
            fastcgi_no_cache $skip_cache;
            fastcgi_cache WORDPRESS;
            fastcgi_cache_valid 60m;
            include fastcgi_params;
    }

    location ~ /purge(/.*) {
            fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
    }

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
            expires 365d;
    }

    location ~*  \.(pdf)$ {
            expires 30d;
    }

}

这是我的负载均衡器 nginx 配置文件:

upstream backend {
server 1.1.1.1:9000;
server 1.1.1.2:9000;
}

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.html index.htm;

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

server_name 1.1.1.3;

 location ~* \.php$/ {
        gzip on;
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass backend;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
    }
}

我在我的 Web 服务器上的访问/错误日志文件中没有发现任何异常,但我的负载均衡器 nginx 错误日志中出现了此错误:

2015/08/06 03:47:59 [error] 3650#0: *17 upstream prematurely closed connection while reading response header from upstream, client: 104.183.250.151, server: 1.1.1.3, request: "GET / HTTP/1.1", upstream: "http://1.1.1.2:80/", host: "1.1.1.3"

顺便说一句,我的 IP 实际上不是 1.1.1.1。我已针对此问题替换了我的实际 IP。

答案1

错误消息告诉您上游(即您代理的 Web 服务器)在发送任何响应标头之前关闭了连接。检查后端 Web 服务器的日志以查看实际发生了什么。

答案2

在平衡器的上游部分,你告诉负载平衡器通过端口 9000 进行连接,但虚拟主机正在监听端口 80,而不是 9000。这就是坏网关的原因

相关内容