NGINX proxy_pass没有将GET传递给代理服务器

时间:2019-07-30 15:48:53

标签: nginx proxy get reverse-proxy nginx-reverse-proxy

问题:

NGINX proxy_pass没有将GET传递给上游代理服务器。

设置:

代理设置非常简单。我们有一个在移动设备上运行的应用程序,该应用程序发送POST(GUID)和GET(到网站的URI)。 POST和GET通过代理服务器发送到upsteam服务器,以处理POST(身份验证GUID)和GET(URI中标识的返回属性)。代理应该只是在应用程序和上游服务器之间传递此TCP通信。

预期结果:

我们希望按照GET中包含的URI将(TCP)内容交付给APP。

当前结果:

50秒后,上游服务器超时(发送408)。我们可以看到,NGINX代理服务器正在从客户端应用程序按预期方式获取预期的POST请求以及POST请求中包含的数据(带有URI的GET到网站)。但是NGINX服务器不会在POST请求之后写出数据。它正在将POST转发到代理服务器,而不是GET。 50秒后,上游代理服务器超时(应发送408)。

测试和错误:

我们在错误日志(调试级别)中没有看到任何问题。唯一的错误是等待GET后上游服务器超时。我们已经在电话(客户端应用程序)和代理服务器上运行了TCPdump,将其面向该应用程序,并将其上游面向代理服务器,并分析了.pcap。我可以看到从电话发送到代理的POST和GET,以及代理确认帧。而且我可以看到代理将POST发送到上游服务器和同一服务器的确认。这一切都在300ms的短时间内发生。代理和上游服务器发送一些保持活动的流量,直到上游最终在50秒后发送超时。但是我从来没有看到GET被传递。

NGINX服务器上的配置:

server {  
listen 80;

    # Make site accessible from http://localhost/
    server_name proxy.server.name;

    location / {

    # Proxy server 
    proxy_pass http://upstream.server.com:8080;

    # Header directives
    include proxy_params;
    proxy_pass_request_body on;
    proxy_pass_request_headers on;
    }

    # Logging location
    access_log /var/log/nginx/proxy.server.name/access.log;
    error_log /var/log/nginx/proxy.server.name/error.log debug;
}

请帮助。

0 个答案:

没有答案