nginx 反向代理对请求 url 的处理方式不同
nginx reverse proxy treats request urls differently
我们使用 nginx 在 AWS presto 集群前面提供安全层。我们为 nginx-presto-cluster.our-domain.com
注册了一个 SSL 证书
presto 请求通过具有基本身份验证的 nginx 传递。
SQL 对 presto 的查询会导致对服务器的多次顺序请求,以获取查询结果。
我们创建了一个如下所示的 nginx.conf:
location / {
auth_basic $auth;
auth_basic_user_file /etc/nginx/.htpasswd;
sub_filter_types *;
sub_filter_once off;
sub_filter 'http://localhost:8889/' 'https://presto.nginx-presto-cluster.our-domain.com/';
proxy_pass http://localhost:8889/;
}
Presto 的响应包含用于获取结果的 nextUri。 sub_filter 将这些 Uri 从 localhost:8889 重写到我们的安全域,在那里它们再次通过 nginx 传递。
问题:
第一个响应的正文看起来完全符合要求:
{
"id":"20171123_104423_00092_u7hmr"
, ...
,"nextUri":"https://presto.nginx-presto-cluster.our-domain.com/v1/statement/20171123_104423_00092_u7hmr/1"
, ...
}
然而,第二个请求看起来像:
{
"id":"20171123_105250_00097_u7hmr"
, ...
, "nextUri":"http://localhost:8889/v1/statement/20171123_105250_00097_u7hmr/2"
, ...
}
我们希望重写始终以相同的方式工作。
你能帮我们吗?
我们通过添加
解决了这个问题
proxy_set_header Accept-Encoding "";
进入上面的配置片段。
原因是如果启用,流量可能会在此过程中被压缩。
字符串替换将不适用于压缩内容。
通过不接受任何编码,我们可以防止这种压缩。
我们使用 nginx 在 AWS presto 集群前面提供安全层。我们为 nginx-presto-cluster.our-domain.com
注册了一个 SSL 证书presto 请求通过具有基本身份验证的 nginx 传递。 SQL 对 presto 的查询会导致对服务器的多次顺序请求,以获取查询结果。
我们创建了一个如下所示的 nginx.conf:
location / {
auth_basic $auth;
auth_basic_user_file /etc/nginx/.htpasswd;
sub_filter_types *;
sub_filter_once off;
sub_filter 'http://localhost:8889/' 'https://presto.nginx-presto-cluster.our-domain.com/';
proxy_pass http://localhost:8889/;
}
Presto 的响应包含用于获取结果的 nextUri。 sub_filter 将这些 Uri 从 localhost:8889 重写到我们的安全域,在那里它们再次通过 nginx 传递。
问题: 第一个响应的正文看起来完全符合要求:
{
"id":"20171123_104423_00092_u7hmr"
, ...
,"nextUri":"https://presto.nginx-presto-cluster.our-domain.com/v1/statement/20171123_104423_00092_u7hmr/1"
, ...
}
然而,第二个请求看起来像:
{
"id":"20171123_105250_00097_u7hmr"
, ...
, "nextUri":"http://localhost:8889/v1/statement/20171123_105250_00097_u7hmr/2"
, ...
}
我们希望重写始终以相同的方式工作。
你能帮我们吗?
我们通过添加
解决了这个问题proxy_set_header Accept-Encoding "";
进入上面的配置片段。
原因是如果启用,流量可能会在此过程中被压缩。 字符串替换将不适用于压缩内容。
通过不接受任何编码,我们可以防止这种压缩。