如何向两个服务器请求,然后使用nginx返回响应?

问题描述 投票:1回答:1

我正在创建一个网站,该网站将请求发送到另一台服务器,然后解析该请求并返回响应。我在python中使用requests库发送请求。我发送请求的代码在这里:

external_server_url = 'https://external_server.com/'
response = self.requests_session.get(external_server_url,
                                     headers={'user-agent': self._get_device_user_agent(),
                                              'cache-control': 'max-age=0',
                                              'sec-fetch-user': '?1',
                                              'upgrade-insecure-requests': '1'})
return response.text

体系结构是这样的:

enter image description here

但是requests库太慢了。我已经将nginx重定向与requests进行了比较,并且nginx重定向是如此之快。用于重定向的nginx代码在这里:

server {
    listen 8888 ssl;
    rewrite ^/(.*)$ https://external_server.com/ redirect;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

我想使用nginx向外部服务器发送请求并将其提供给Django服务器的新体系结构。新的架构是这样的:

enter image description here

如何使用nginx服务器创建此体系结构?

nginx
1个回答
0
投票

此处不是请求库,而是未关闭连接的远程服务器。另外,响应中可能包含一些不符合标准的标头,并且请求库无法正确处理它们,也无法从其侧面关闭连接。

您可以将协议从“ 1.1”降级到“ 1.0”(以禁用http保持活动功能,也可以在请求“ Connection:close”中添加标头,从而要求远程服务器在处理请求后关闭连接(有效地禁用保持活动功能)。

external_server_url = 'https://external_server.com/'
response = self.requests_session.get(
  external_server_url,
  headers={
    'connection': 'close',
    'user-agent': self._get_device_user_agent(),
    'cache-control': 'max-age=0',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1'
  }
)
return response.text
© www.soinside.com 2019 - 2024. All rights reserved.