NGINX:如何在反向代理中添加查询字符串?

时间:2019-07-19 21:21:01

标签: nginx nginx-reverse-proxy

我正在尝试为请求rest api设置反向代理,例如,我正在发出这样的请求:

127.0.0.1/v1/resources/get/list/23948

目标主机上的预期请求应如下:

http://api.example.com/v1/resources/get/list/23948?key=skdma239mfmd0idfm9844

您可以在预期的请求中看到一个查询字符串,其原因是为了保护客户端的值,以免敏感数据泄漏。

我尝试过这样的位置定义:

location /v1/resources/get/ {
    proxy_pass http://api.example.com$uri?key=sdkmfg234msdkmad9898
}

但是由于某种原因,NGINX的响应为500。

是否可以在proxy_pass中添加查询字符串?还是可以将查询字符串添加到反向代理中以保护此数据?

注意:我知道stackoverflow中存在一个与此问题类似的问题,但是该问题中没有任何答案可以解决我的问题。 我已经编辑了我上次尝试的代码,nginx响应502状态

1 个答案:

答案 0 :(得分:0)

在对nginx文档进行了深入的阅读之后,在@RichardSmith的帮助下,我能够使用proxy_pass通过resolver成功地发出请求。

问题在于,当在域中使用proxy_pass时,nginx的内置解析器将尝试自行解析以查看是否缓存了DNS,因为没有定义DNS解析器,nginx无法完成请求。

我的位置定义最终像这样:

location /v1/resources/get/ {
    resolver 8.8.8.8;
    proxy_pass http://api.example.com$uri?key=sdkmfg234msdkmad9898
}

因为这是为了进行测试,所以我使用了Google的默认解析器8.8.8.8