Nginx proxy_pass 连接超时,配置非常简单

Nginx proxy_pass 连接超时,配置非常简单

首先,我对 nginx 还很陌生。我正尝试为我们的网站进行预渲染,这涉及执行重写和 proxy_pass,但我无论如何也想不出是什么导致它失败。

下面我使用的配置仅用于故障排除,但 60 秒后仍然会出现连接超时的情况。我可以将其指向任何 IP 或主机,它都会失败。使用 wget 检索任何 IP 或主机上的页面都可以正常检索页面,例如http://www.google.com或者我试图访问的服务器,http://service.prerender.io,所以这与 nginx 如何执行 proxy_pass 有关。

服务器内部位于 10.3.3.91。奇怪的是,我可以将 proxy_pass 指向 10.3.3.92(另一个 nginx 服务器)并检索页面。

我很困惑。如能得到任何帮助我将不胜感激。

worker_processes 4;

worker_rlimit_nofile 65000;


events {
    worker_connections  2048;
}

http {

        # Logging Settings
        access_log /var/log/nginx/test1-access.log;
        error_log /var/log/nginx/test1-error.log;

  server {
    listen 80;

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

    location / {
        proxy_set_header X-Prerender-Token OUR_TOKEN;
        #resolve using Google's DNS server to force DNS resolution and prevent caching of IPs
        resolver 8.8.8.8;
            set $prerender "service.prerender.io";
            rewrite .* /$scheme://$host$request_uri? break;
            proxy_pass http://$prerender;
        break;
        }
    }
}

我在错误日志中看到的示例:

2016/08/26 10:03:12 [error] 3635#0: *249 upstream timed out (110: Connection timed out) while connecting to upstream, client: 10.103.11.151, server: , request: "GET /something.php HTTP/1.1", upstream: "http://54.225.208.171:80/http://10.3.3.91/something.php", host: "10.3.3.91"

答案1

我们的网络团队为几个不同的域名设置了 Web 代理例外,例如 purple.com 进行测试,我将 proxy_pass 改为 purple.com,结果成功了。据我所知,proxy_pass 无法理解来自 Web 代理的响应,而 wget 和 curl 等 CLI 命令则无法理解。

相关内容